这个查询很简单:
$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个人,他们认为优步手机不是必需的。
发布于 2010-11-22 19:49:25
$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)发布于 2010-11-22 19:47:37
如果您执行IN('8'),则6,7将自动不被选中。
你想得太多了。但是,如果你想写它,那么你可以这样做:
n.network_id IN('8') AND n.network_id NOT IN(6,7)发布于 2013-09-25 02:42:44
你可能甚至不再需要这个答案了,但我遇到了一些非常相似的问题,我通过这样做解决了它:
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”。
https://stackoverflow.com/questions/4245044
复制相似问题