在 JOIN 查询中使用 Mysql GROUP_CONCAT
Using Mysql GROUP_CONCAT in JOIN Query
我有一个这样的字符串:
'41,42,43,44,45,46,'
来自这个查询:
SELECT
GROUP_CONCAT(lv
SEPARATOR ',') as Id
FROM
(SELECT
@pv:=(SELECT
GROUP_CONCAT(Id
SEPARATOR ',')
FROM
iot_zone
WHERE
FIND_IN_SET(id_zone, @pv)) AS lv
FROM
iot_zone
JOIN (SELECT @pv:=40) tmp) a;
我需要将此结果加入查询,例如:
SELECT T.* FROM T, T2
WHERE T.Id = T2.Id
其中 T2 是 table,结果为 GROUP_CONCAT
41
42
43
44
45
46
你能帮帮我吗?
非常感谢
尝试以下方法
CREATE TABLE T2(Id int);
INSERT T2(Id)VALUES(41),(42),(43);
SELECT *
FROM
(
SELECT '41,42,43,44,45,46,' Id
) T
JOIN T2 on CONCAT(',',T.Id) LIKE CONCAT('%,',T2.Id,',%')
希望我正确理解了你的问题。
我发现了另一个 FIND_IN_SET
的变体 -
我认为它会更有用
SELECT *
FROM
(
SELECT '41,42,43,44,45,46,' IdList
) T
JOIN T2 ON FIND_IN_SET(T2.Id,T.IdList)
我有一个这样的字符串:
'41,42,43,44,45,46,'
来自这个查询:
SELECT
GROUP_CONCAT(lv
SEPARATOR ',') as Id
FROM
(SELECT
@pv:=(SELECT
GROUP_CONCAT(Id
SEPARATOR ',')
FROM
iot_zone
WHERE
FIND_IN_SET(id_zone, @pv)) AS lv
FROM
iot_zone
JOIN (SELECT @pv:=40) tmp) a;
我需要将此结果加入查询,例如:
SELECT T.* FROM T, T2
WHERE T.Id = T2.Id
其中 T2 是 table,结果为 GROUP_CONCAT
41
42
43
44
45
46
你能帮帮我吗?
非常感谢
尝试以下方法
CREATE TABLE T2(Id int);
INSERT T2(Id)VALUES(41),(42),(43);
SELECT *
FROM
(
SELECT '41,42,43,44,45,46,' Id
) T
JOIN T2 on CONCAT(',',T.Id) LIKE CONCAT('%,',T2.Id,',%')
希望我正确理解了你的问题。
我发现了另一个 FIND_IN_SET
的变体 -
我认为它会更有用
SELECT *
FROM
(
SELECT '41,42,43,44,45,46,' IdList
) T
JOIN T2 ON FIND_IN_SET(T2.Id,T.IdList)