我有两个表如下:
CREATE TABLE `keywords_by_city` (
`idKEYWORD` int(11) NOT NULL,
`CITY` varchar(45) NOT NULL);
CREATE TABLE `city` (
`idCITY_NAME` varchar(50) NOT NULL DEFAULT ''
);
我想获取 idKeyword=781 不存在的所有城市的列表。
我尝试按如下方式创建查询,但我认为它不正确:
SELECT cty.`idCITY_NAME`
FROM `keywords_by_city` kbc
LEFT JOIN `city` cty ON cty.`idCITY_NAME` = kbc.`CITY`
WHERE kbc.`idKEYWORD` IS NULL
AND kbc.`idKEYWORD` = 781
我还尝试了以下方法:
SELECT `CITY`
FROM `keywords_by_city` kbc
WHERE kbc.`idKEYWORD` = 781
AND kbc.`CITY` NOT IN (SELECT `idCITY_NAME` FROM `city`);
这些似乎都不起作用。有人可以帮忙吗。如果可能的话,我更喜欢没有子查询的解决方案。
更新
我正在使用以下数据:
INSERT INTO keywords_by_city (idKEYWORD, CITY)
VALUES (781, 'NYC'), (266855, 'NYC'),
(266856, 'NYC'), (266857, 'NYC'),
(266858, 'NYC'), (266859, 'NYC');
INSERT INTO `city`
(`idCITY_NAME`)
VALUES
('NYC'),('Jersey City'),
('San Jose'),('Albany');