gpt4 book ai didi

php - mySQL 从匹配或不存在的两个表中选择

转载 作者:行者123 更新时间:2023-11-30 22:47:40 27 4
gpt4 key购买 nike

我在设置 SQL 查询时遇到问题,希望有人能帮助我。

所以这是任务,我有两个表,我想通过单个查询获得。不是什么大问题,除非涉及到 WHERE 子句匹配。我需要表 A 中的所有条目,但只需要表 B 中的匹配条目,但是保留表 A 中链接 ID 不存在的条目。

为了弄清楚我这里有一个表的示例结构...

TABLE A    

ID | VAL1 | VAL2 | VAL3
1 | abc | xyz | 123
2 | abc | xyz | 123
3 | abc | xyz | 123
4 | abc | xyz | 123

TABLE B

ID | A-ID | X1 | X2 | X3 | FLAG
1 | 1 | ab | xy | 98 | 1
2 | 1 | ab | xy | 98 | 1
3 | 1 | ab | xy | 98 | 0
4 | 2 | ab | xy | 98 | 1
5 | 2 | ab | xy | 98 | 0
6 | 4 | ab | xy | 98 | 1

所以如果使用这个查询...

SELECT a.*, b.* FROM Table_A AS a LEFT JOIN Table_B AS b ON b.a-id = a.id WHERE b.flag = 0

...我当然只得到 A 的条目在 B 中有匹配项,在这个例子中是 ID 1 和 2,因为 3 在 B 中没有条目,而 4 只有一个带有 FLAG 1 的条目。

但是,在结果数组中,我还需要 A3 和 A4,而 B 数组值只是空的。

我目前不知道这是否可以在单个查询中轻松完成。我已经尝试了一种不同的方法,将查询更改为类似...

SELECT a.*, (SELECT b.* FROM Table_B AS b WHERE b.a-id = a.id) AS array FROM Table_A AS a

... 但在这种情况下 b.* 是不允许的。 :(

最佳答案

感谢 Pat 的建议,在这种情况下,我刚刚找到了适合我的解决方案,因此对于可能感兴趣的任何人,我将 WHERE 子句移至 ON 子句,现在我得到了我需要的结果。 .

SELECT a.*, b.* FROM Table_A AS a LEFT JOIN Table_B AS b ON (b.a-id = a.id AND b.flag = 0)

下次需要记住这一点。 :)

关于php - mySQL 从匹配或不存在的两个表中选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29134810/

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