gpt4 book ai didi

mySQL - 两个表之间的差异

转载 作者:行者123 更新时间:2023-11-29 00:24:11 25 4
gpt4 key购买 nike

我有两个表如下:

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');

最佳答案

您的尝试很接近。您只需要交换表并将关键字 ID 要求放入连接子句中:

SELECT cty.`idCITY_NAME`
FROM `city` cty
LEFT JOIN `keywords_by_city` kbc ON cty.`idCITY_NAME` = kbc.`CITY` AND kbc.`idKEYWORD` = 781
WHERE kbc.`idKEYWORD` IS NULL

此外,在外键字段上添加索引是标准做法 - 即。 keywords_by_cityCITY。这将使查询的执行速度显着加快,尤其是随着表的增长。

关于mySQL - 两个表之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19799547/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com