gpt4 book ai didi

mysql - 如何使用 IN() 编写 mysql 连接查询

转载 作者:行者123 更新时间:2023-11-30 22:47:35 26 4
gpt4 key购买 nike

你能帮我写我的 MySQL 连接查询吗?这是我到目前为止所拥有的:

SELECT * FROM table1 LEFT JOIN table2 ON table2.id IN 
(table1.comma_separated_ids) WHERE table1.id = [some id]

其中 table1.comma_separated_ids 是一个 VARCHAR 列,其中包含与 table2 中的 ID 相关的逗号分隔 ID(整数)列表。

上面的查询只返回一行,而它应该返回 table1.comma_separated_ids 中与 table2 中有匹配行的每一行

我实际上想做的事情有点复杂,但很难解释,所以我从这里开始。有帮助吗?

最佳答案

在 MySQL 中,您不能将逗号分隔的列表作为 单个 参数传递给 in。它被视为一个字符串,一个单独的字符串。

您可以使用find_in_set():

SELECT *
FROM table1 LEFT JOIN
table2
ON find_in_set(table2.id, table1.comma_separated_ids)
WHERE table1.id = XXX;

但是,更大的问题是您将 ID 存储在逗号分隔列表中。这些应该在一个单独的联结表中,每个 id 一行。将列表存储在字符串中已经够糟糕了;存储整数 id 更糟糕。

关于mysql - 如何使用 IN() 编写 mysql 连接查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29158420/

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