gpt4 book ai didi

mysql - 在同一个表中的列设置的条件下,使用同一个表中的两个值进行 SQL 查询

转载 作者:行者123 更新时间:2023-12-01 00:03:31 25 4
gpt4 key购买 nike

我有这两张表:

TableA:
aid ! name
--- ! -----
1 ! Paper
2 ! Rock
3 ! Sciz

Table B (aid is TableA FKEY)
id ! aid ! area ! mode
-- ! --- ! ----- ! ----
1 ! 1 ! 200 ! 1
2 ! 1 ! 240 ! 2
3 ! 2 ! 300 ! 1
4 ! 2 ! 290 ! 2
5 ! 3 ! 100 ! 1
6 ! 3 ! 110 ! 2

我想编写一个将返回以下结果的查询:

aid ! area(mode=1) ! area(mode=2) 
--- ! ------------ ! ------------
1 ! 200 ! 240
2 ! 300 ! 290
3 ! 100 ! 110

如何在 mySQL 中完成此操作?我还需要排除表 B 仅包含模式 1 的值而不包含模式 2 的值的情况,反之亦然。

谢谢。

最佳答案

这是一个称为枢轴的过程。
并且可以结合使用 GROUP BY 和 MAX(CASE END) 子句来完成。
HAVING 子句确保 B.aid 具有包含 1 和 2 模式的两个记录。

SELECT 
B.aid
, MAX(CASE WHEN B.mode = 1 WHEN B.area ELSE 0 END) AS 'area(mode=1)'
, MAX(CASE WHEN B.mode = 2 WHEN B.area ELSE 0 END) AS 'area(mode=2)'
FROM
B
GROUP BY
B.aid
HAVING
SUM(B.mode = 1) = 1
AND
SUM(B.mode = 2) = 1
ORDER BY
B.aid ASC

关于mysql - 在同一个表中的列设置的条件下,使用同一个表中的两个值进行 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49880399/

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