gpt4 book ai didi

mysql - 根据表字段从不同表收集值

转载 作者:行者123 更新时间:2023-11-29 12:58:23 24 4
gpt4 key购买 nike

假设我有以下表结构:

  • 表 1

主ID |类型 |信息

first segway excellent
second car mercedes
third bike sliceofwind
  • table 赛格威

id |等级

1  excellent
2 bad
3 (...)
  • table 车

id |品牌

1  mercedes
2 honda
3 (...)
  • 台式自行车

id |轮胎

1 sliceofwind
2 flatasfaque
3 (...)

我想做的是根据table1中的类型动态地从不同的表中获取信息。

这是我尝试过的查询的一般示例

SELECT (CASE 
WHEN table1.type = 'segway' AND segway.grade = table1.information
THEN segway.id,
WHEN table1.type = 'car' AND car.brand = table1.information
THEN car.id,
WHEN table1.type = 'bike' AND bike.tires = table1.information
THEN bike.id
END) AS information
FROM table1,segway,bike,car WHERE table1.main_id IN ("ids")

此查询的结果是笛卡尔积,因为尽管案例内部有限制,但仍会检索所有表中的所有数据,因为并非所有表都有限制。我想知道是否有一种方法可以在不改变表结构的情况下解决这个问题,如果没有请提供一些提示! (我正在做一些奇怪的 sql 事情,我在这里问是否确实可能这样做,尽管是否被建议以及为什么!)。

最佳答案

这可能是一种方法。

SELECT t1.*
FROM table1 t1
LEFT JOIN segway s
on T1.main_id = s.id and T1.type= 'segway'
LEFT JOIN car c
on T1.main_id = c.id and T1.type= 'car'
LEFT JOIN bike b
on T1.main_id = b.id and T1.type= 'bike'
WHERE t1.main_ID in (SomeList)

当 Table1 的类型不匹配时,segway、汽车和自行车表列将为空。然而,这似乎会给您返回比您需要的更多的数据/列。我认为您最好在数据库外部编写单独的查询,并根据它们选择的值来调用它们。或者使用数据库中的过程和条件逻辑来返回所需的结果集。 (数据库中再次有 3 个单独的查询和条件逻辑)但在不了解用例的情况下,我真的无法说出哪个更好。

我们可以进一步将品牌、轮胎和等级合并到“值(value)”字段中,如下所示

选择 t1.*, coalese(s.grade,c.brand,b.tires) 作为值,但我不确定这是否提供任何帮助。

如果我们只需要返回表 1 的值并设置其他表中的值...你说的是 kinky,而不是我。

我不明白笛卡尔是如何以这种方式发生的。

关于mysql - 根据表字段从不同表收集值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23698554/

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