gpt4 book ai didi

mysql - 在没有子查询的情况下选择在同一列中具有不同值而在另一列中具有不同值的记录

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

我有这张表:

item        year
---- ----
1 1999
2 1999
3 1999
2 2000
4 2000
2 2001
3 2001
4 2001
5 2001

我需要这个结果(选择了 1999)

item        year
---- ----
4 2000
4 2001
5 2001

总而言之,我需要获取不在 1999 年但在另一个不同年份定义的新项目(这是为了稍后通过​​另一个查询添加它们)。

我使用的是旧版 MySQL,而且我无法使用子查询。有没有兼容的解决方案?

最佳答案

像这样的东西怎么样

SELECT t1.item, t1.year from table as t1
LEFT JOIN table as t2 ON t2.item = t1.item AND t2.year = 1999
WHERE t2.item IS NULL

在“英语”中,它的意思是从我的表格中选择所有项目。然后为每个项目尝试查找它们是否在 1999 年的表中,否则输入 NULL。然后你只需要说“保留 t2 中没有匹配元素的元素。

不确定我的解释是否更好

编辑:您当然需要将 table 替换为您自己的表的名称。我在一个小示例上对其进行了测试,它似乎有效。

EDIT2:如果您查看 LEFT JOIN 的结果,您会得到类似这样的结果:

t1.item     t1.year    t2.item     t2.year
---- ---- ---- ----
1 1999 1 1999
2 1999 2 1999
3 1999 3 1999
2 2000 2 1999
4 2000 NULL NULL
2 2001 2 1999
3 2001 3 1999
4 2001 NULL NULL
5 2001 NULL NULL

然后,如果您添加 WHERE t2.item IS NULL,您只会在表中保留没有 1999 年的那些。这是更好的理解方式吗?

关于mysql - 在没有子查询的情况下选择在同一列中具有不同值而在另一列中具有不同值的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13415608/

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