gpt4 book ai didi

mysql - SQL 连接多个表并按单列排序

转载 作者:太空宇宙 更新时间:2023-11-03 10:46:42 25 4
gpt4 key购买 nike

我正在尝试连接多个表并根据它们共享的公共(public)列对数据进行排序。这是一个例子:

表A

    pk  itemId  text
1 10 ordered
1 5 make
1 8 it
1 4 not

表B

    pk  itemId  text    variable
1 6 sense 94
1 1 this 99
1 2 text 98

表 C

    pk  itemId  text    anotherVariable
1 3 does 97
1 7 unless 93
1 9 is 91

我需要决赛 table 看起来像这样:

结果表

    pk  itemId  text    variable
1 1 this 99
1 2 text 98
1 3 does 97
1 4 not NULL
1 5 make NULL
1 6 sense 94
1 7 unless 93
1 8 it NULL
1 9 is 91
1 10 ordered NULL

我正在使用以下查询,但它不起作用...

    SELECT *
FROM tableA as A
INNER JOIN tableB as B ON A.pk = B.pk
INNER JOIN tableC as C ON A.pk = C.pk
ORDER BY A.itemId, B.itemId, C.itemId

编辑:添加了另一个变量来进一步解释我的问题,在所有表中我并不总是在所有表上都有相同的列名。在其他表上,我可能希望在结果表中包含不同的列。

最佳答案

改用UNION ALL

SELECT pk, itemId, [text], variable = NULL FROM TableA UNION ALL
SELECT pk, itemId, [text], variable FROM TableB UNION ALL
SELECT pk, itemId, [text], anotherVariable FROM TableC
ORDER BY pk, itemId

只要所有 SELECT 语句中的列数相同,并且所有列都具有相同的数据类型,UNION ALL 就应该可以工作。

这是 UNION 的文档.

关于mysql - SQL 连接多个表并按单列排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30721942/

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