gpt4 book ai didi

MYSQL 根据列数据和表名连接表

转载 作者:IT王子 更新时间:2023-10-28 23:49:12 24 4
gpt4 key购买 nike

我想知道这是否可行。

我想根据表 1 的数据连接 2 个表。示例表 1 的列 food 的数据为“hotdog”。

我有一张名为 hotdog 的 table 。

是否可以像这样进行 JOIN。

SELECT * FROM table1 t join t.food on id = foodid

我知道它行不通,但它甚至是可能的,是否有解决办法?

提前致谢。

最佳答案

不,您不能在 table1 中的每行加入不同的表,即使像 @Cade Roux 建议的那样使用动态 SQL 也是如此。

您可以加入 hotdog 表以获取食物为“热狗”的行,并加入其他表以获取食物的其他特定值。

SELECT * FROM table1 JOIN hotdog ON id = foodid WHERE food = 'hotdog'
UNION
SELECT * FROM table1 JOIN apples ON id = foodid WHERE food = 'apples'
UNION
SELECT * FROM table1 JOIN soups ON id = foodid WHERE food = 'soup'
UNION
...

这要求您了解食物的所有不同值,并且所有相应的食物表都有兼容的列,以便您可以将它们联合在一起。

您所做的称为<​​em>多态关联。也就是说,table1 中的外键引用了多个“父”表中的行,具体取决于 table1 另一列中的值。这是关系型数据库程序员常见的设计错误。

有关替代解决方案,请参阅我的回答:

我还在我的演示文稿中介绍了多态关联的解决方案 Practical Object Oriented Models In SQL ,在我的书中 SQL Antipatterns Volume 1: Avoiding the Pitfalls of Database Programming .

关于MYSQL 根据列数据和表名连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8171592/

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