gpt4 book ai didi

mysql - CASE 和 IF 查询仅返回一个条件结果

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

 SELECT a.*, IF(b.pid=a.id,b.id,0) AS bpid 
FROM table1 a, table2 b
ORDER BY a.datetime DESC;

我在表 1 a 中有 15 条记录,在表 2 b 中有两条记录,其中 b.pid=a.id

在任何给定时间,只有表 b 中的其中一条记录被拉入结果中。两者都应作为 bpid 拉入,但只有后者才能完成行程。

我也尝试过使用CASE(实际上首先尝试了CASE):

 SELECT a.*, (CASE WHEN b.pid=a.id THEN b.id ELSE NULL END) AS bpid 
FROM table1 a, table2 b
ORDER BY a.datetime DESC;

我错过了什么?

为了清楚起见:我在结果中获取了 table1 a 中的全部 15 条记录,但没有获取 table2 b 中的两条记录。

最佳答案

您没有正确连接表。作为提示,请停止在 FROM 子句中使用逗号,这将帮助您考虑连接应该是什么。

/* for all records */
SELECT
a.*
, b.id AS bpid
FROM table1 a
LEFT JOIN table2 b ON a.id = b.id
ORDER BY a.DATETIME DESC

/* for only matching records */
SELECT
a.*
, b.id AS bpid
FROM table1 a
INNER JOIN table2 b ON a.id = b.id
ORDER BY a.DATETIME DESC

关于mysql - CASE 和 IF 查询仅返回一个条件结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32712691/

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