gpt4 book ai didi

mysql - 如何将一个表中两列的数据拆分到结果表的多列中

转载 作者:可可西里 更新时间:2023-11-01 08:15:04 27 4
gpt4 key购买 nike

所以我一直在尝试让 mySQL 查询适用于我拥有的大型数据库。我有(比方说)两个表 Table_One 和 Table_Two。 Table_One 有 Type、Anima 和 TestID 三列,Table_Two 有 2 列 Test_Name 和 Test_ID。带有值的示例如下:

           TABLE_ONE


Type Animal TestID
-----------------------------------------
Mammal Goat 1
Fish Cod 1
Bird Chicken 1
Reptile Snake 1
Bird Crow 2
Mammal Cow 2
Bird Ostrich 3

Table_Two
Test_name TestID
-------------------------
Test_1 1
Test_1 1
Test_1 1
Test_1 1
Test_2 2
Test_2 2
Test_3 3

在 Table_One 中,所有类型都在一列下,所有类型(哺乳动物、鱼类、鸟类、爬行动物)的值都在另一列(动物)下。 Table_One 和 Table_Two 可以通过 Test_ID 链接起来

我正在尝试创建如下所示的表格:

Test_Name      Bird      Reptile      Mammal          Fish
-----------------------------------------------------------------
Test_1 Chicken Snake Goat Cod
Test_2 Crow Cow
Test_3 Ostrich

这应该是我的决赛 table 。我目前使用的方法是制作 Table_One 的多个实例并使用连接来形成这个最终表。因此,Bird、Reptile、Mammal 和 Fish 列都来自 Table_one 的不同副本。

例如

Select
Test_Name As 'Test Case Name',
Table_Bird.Animal AS 'Birds',
Table_Mammal.Animal AS 'Mammal',
Table_Reptile.Animal AS 'Reptile,
Table_Fish.Animal AS 'Fish'
From Table_One
INNER JOIN TABLE_Two AS Table_Bird
On Table_One.TestID = Table_Bird.TestID
INNER JOIN TABLE_Two AS Table_Mammal
On Table_One.TestID = Table_Mammal.TestID
INNER JOIN TABLE_Two AS Table_Reptile
On Table_One.TestID = Table_Reptile.TestID
INNER JOIN TABLE_Two AS Table_Fish
On Table_One.TestID = Table_Fish.TestID
Where Table_Bird.Type LIKE 'Birds'
AND Table_Mammal.Type LIKE 'Mammals'
AND Table_Reptile.Type LIKE 'Reptiles'
AND Table_Fish.Type LIKE 'Fish'

此查询的问题在于它仅在所有 Birds、Mammals、Reptiles 和 Fish 条目都具有一定值时才有效。如果 Test_Two 或 Test_Three 的一个字段为空,则不会返回该记录。我在 WHERE 子句中使用了 Or 而不是 And,但效果不佳。

如果有人能指出正确的方向,我将不胜感激。

最佳答案

尝试用 LEFT JOIN 替换您的 INNER JOIN 语句。

关于mysql - 如何将一个表中两列的数据拆分到结果表的多列中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31565041/

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