gpt4 book ai didi

mysql - 执行 leftJoin 来获取缺失值,但得到的值不是零?

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

旧的 leftJoin 问题的一个细微变化:我有两个要加入的表:

ID Val1
1 100
2 200
3 300

ID Val2
2 50

已关注 combine two tables and fill in missing values in mysql和其他人,这个:

SELECT Table1.ID, Table1.Val1, COALESCE(Table2.Val2, 0) AS Val2
FROM Table1 LEFT OUTER JOIN Table2 USING (ID)

会给我通常的结果:

ID Val1 Val2
1 100 0
2 200 50
3 300 0

我的问题:有没有办法得到零以外的东西作为缺失值,也许:

ID Val1 Val2
1 100 9999
2 200 50
3 300 9999

我想对结果进行排序,以便缺少值的项目出现在集合的末尾;像这样的事情似乎让我可以做到这一点(当然还有一些额外的 ORDER BY 内容)。

有什么想法吗?如果这无法完成,是否有其他方法可以按照我想要的方式进行订购?谢谢!

最佳答案

使用COALESCE(Table2.Val2, 9999) 而不是COALESCE(Table2.Val2, 0)

这就是 COALESCE 的作用,如果第一个表达式为 NULL,则它设置下一个表达式。

如果您的主要目标是将 0 值行放在底部,并按升序对其余行进行排序,则可以执行以下操作。

SELECT 
Table1.ID,
Table1.Val1,
COALESCE(Table2.Val2, 0) AS Val2
FROM Table1
LEFT OUTER JOIN Table2 USING (ID)
ORDER BY
(CASE WHEN Table2.Val2 IS NULL then 1 ELSE 0 END),
Table2.Val2

这将产生一个如下排序的结果集:

ID Val1 Val2
2 200 50
1 100 0
3 300 0

关于mysql - 执行 leftJoin 来获取缺失值,但得到的值不是零?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29572312/

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