首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用SQL IN()的独占查询

使用SQL IN()的独占查询
EN

Stack Overflow用户
提问于 2010-11-22 19:43:52
回答 4查看 2.7K关注 0票数 1

这个查询很简单:

代码语言:javascript
复制
$networks = '6,7,8';

$query = "SELECT DISTINCT countryName 
FROM countries AS Country
INNER JOIN countries_networks AS n ON Country.id = n.country_id
WHERE n.network_id IN (".$networks.")";

但是,如果我想选择网络编号8,而不是6,7,我该怎么做呢?

一种IN('8') but NOT IN('6,7')

IN()的使用不是必需的。

我正在寻找那些只有8个网络的国家。原因是我有两个级别的手机。比如说,在网络6和7中工作的“人渣电话”,以及在网络6、7和8中工作的“Uber-phone”。我想要得到那些必须拥有Uber-phone的国家(仅限8)。目前,这些查询将得到8个,但不是独占的。他们没有注意到这样一个事实,即那里可能也有6,7个人,他们认为优步手机不是必需的。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-11-22 19:49:25

代码语言:javascript
复制
$query = "SELECT DISTINCT countryName 
FROM countries AS Country
INNER JOIN countries_networks AS n ON Country.id = n.country_id
WHERE n.network_id in (8) AND not n.network_id  in (6, 7)
票数 1
EN

Stack Overflow用户

发布于 2010-11-22 19:47:37

如果您执行IN('8'),则6,7将自动不被选中。

你想得太多了。但是,如果你想写它,那么你可以这样做:

代码语言:javascript
复制
n.network_id IN('8') AND n.network_id NOT IN(6,7)
票数 4
EN

Stack Overflow用户

发布于 2013-09-25 02:42:44

你可能甚至不再需要这个答案了,但我遇到了一些非常相似的问题,我通过这样做解决了它:

代码语言:javascript
复制
SELECT DISTINCT countryName 
FROM countries AS Country
INNER JOIN countries_networks AS n ON Country.id = n.country_id
WHERE n.network_id IN ('8') and countryName not in (
    SELECT DISTINCT countryName 
    FROM countries AS Country
    INNER JOIN countries_networks AS n ON Country.id = n.country_id
    WHERE n.network_id IN ('6', '7')
);

这样你就只选择了network_id是“8”的那些,而不是“6”和“7”。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4245044

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档