gpt4 book ai didi

mysql - 此 MySQL 查询的任何问题

转载 作者:行者123 更新时间:2023-12-01 00:52:07 24 4
gpt4 key购买 nike

我有这个问题:

   SELECT A.id FROM TableB B
LEFT JOIN TableA A ON
CONCAT(',',B.class_id,',') LIKE CONCAT('%,',A.class_id,',%')
WHERE A.class_id is not null

表A

 [id]   |   [class_id]
---------------------
One 1, 10, 16, 18
Two 14, 11
Three 19, 13, 15
Four 10

表B

 [id]   |   [class_id]
---------------------
ABC 1
AC 1
DE 10
DEC 19
ACD 16
BCD 18
BCO 18

我没有从 TableA 获得所有具有来自 TableB 的 class_idid。我也愿意接受任何其他更好的查询建议。

这就是我想要的:

  One   // class_id contains  1, 10 16 and 18 that are in `TableB` class_id
Three // class_id contains 19 which is in `TableB` class_id
Four // class_id contains 10 which is in `TableB` class_id

最佳答案

虽然您可能会使用此策略,但它会很棘手且查询速度非常慢。问题在于出现在 csv 列表开头或结尾的数字,因此与模式 '%,X,%' 不匹配

你应该做的是制作一个适当的表,每个(id,class_id)一行,如下所示:

[id]   |   [class_id]
---------------------
One 1
One 10
One 16
One 18
Two 14
Two 11
Three 19
Three 13
Three 15
Four 10

然后你的查询就变成了一个简单的连接:

SELECT A.id, B.class_id FROM TableB B
join TableA A ON
B.class_id = A.class_id
where A.class_id is not null

关于mysql - 此 MySQL 查询的任何问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14490289/

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