gpt4 book ai didi

mysql - 使用一个表中的逗号分隔列表作为查询另一个表的子句

转载 作者:行者123 更新时间:2023-11-29 01:29:47 28 4
gpt4 key购买 nike

我有一个 events 表,其中包含一个名为 breaks 的字段。这是用逗号分隔格式的数据填充的,即 1,2,311,4,5 - 相同的格式MySQL 的 IN 命令使用。

然后我想在 slots 表上运行查询,以返回除 events.breaks 中指定的行之外的所有行。

从理论上讲,查询应该是这样的:

SELECT
`slots`.`id` AS id,
RIGHT(`slots`.`time`, 8) AS `time`
FROM
`slots`, `event`
WHERE
`slots`.`id` NOT IN (`event`.`breaks`)

但这似乎不起作用 - 如果 event.breaks4,5,7slots 中的唯一行未返回的表是 4!

SQLFiddle 在这里:http://sqlfiddle.com/#!2/913fe/1/0

最佳答案

您将单个字段传递给 NOT IN () 子句,而不是子表达式。可以这样想

(1, 2, 3)

大致相同

SELECT 1
UNION
SELECT 2
UNION
SELECT 3;

作为子表达式。你正在做的是

('4,5,7')

大致相当于

SELECT '4,5,7';

这反过来MySQL可能会转换为数字进行比较,结果是

NOT IN (4)

您实际尝试做的事情实际上不应该那样做。如果您添加一个 AxB 关系表会更好,这样您就可以选择包含您不想要的 ID 的几行。

关于mysql - 使用一个表中的逗号分隔列表作为查询另一个表的子句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19407183/

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