当其中一个字段包含逗号分隔的数字时,如何在 mySQL 中使用 GROUP_CONCAT?
How to use GROUP_CONCAT in mySQL when one of the fields contain comma seperated numbers?
我有两个 table 如下。 (Table A 和 Table B)。 Table B 有一个字段包含来自 table A 的多个 ID,但以逗号分隔。它们保证存在于 Table A.
Table A
FIELD1 FIELD2
1 CAR
2 BUS
3 TRUCK
.
.
Table B FIELD2 : "1,3".
我要的是B中的每条记录(来自过滤条件)
FIELD1 FIELD2 FIELD3
B.ID CAR,TRUCK something....
我想从 table A 中提取 FIELD2,其中 每个字段的 ID 与 Table B (FIELD2) 中的每个字段匹配。实现此目标的最佳方法是什么?
这是我尝试过的,但它没有给我想要的。
SELECT
GROUP_CONCAT(A.FIELD2) AS VEHICALS
FROM B
LEFT JOIN A ON A.FIELD1 IN (B.FIELD2)
WHERE B.FIELD_X > 20;
感谢任何帮助。
使用FIND_IN_SET()
和GROUP BY B.ID, B.FIELD2
SELECT B.ID, GROUP_CONCAT(A.FIELD2 ORDER BY A.FIELD1) AS VEHICALS
FROM B INNER JOIN A
ON FIND_IN_SET(A.FIELD1, B.FIELD2)
WHERE B.FIELD_X > 20
GROUP BY B.ID, B.FIELD2
由于 ids 保证存在于 Table A 中,因此不需要 LEFT
连接,使用 INNER
连接.
参见 demo.
我有两个 table 如下。 (Table A 和 Table B)。 Table B 有一个字段包含来自 table A 的多个 ID,但以逗号分隔。它们保证存在于 Table A.
Table A
FIELD1 FIELD2
1 CAR
2 BUS
3 TRUCK
.
.
Table B FIELD2 : "1,3".
我要的是B中的每条记录(来自过滤条件)
FIELD1 FIELD2 FIELD3
B.ID CAR,TRUCK something....
我想从 table A 中提取 FIELD2,其中 每个字段的 ID 与 Table B (FIELD2) 中的每个字段匹配。实现此目标的最佳方法是什么?
这是我尝试过的,但它没有给我想要的。
SELECT
GROUP_CONCAT(A.FIELD2) AS VEHICALS
FROM B
LEFT JOIN A ON A.FIELD1 IN (B.FIELD2)
WHERE B.FIELD_X > 20;
感谢任何帮助。
使用FIND_IN_SET()
和GROUP BY B.ID, B.FIELD2
SELECT B.ID, GROUP_CONCAT(A.FIELD2 ORDER BY A.FIELD1) AS VEHICALS
FROM B INNER JOIN A
ON FIND_IN_SET(A.FIELD1, B.FIELD2)
WHERE B.FIELD_X > 20
GROUP BY B.ID, B.FIELD2
由于 ids 保证存在于 Table A 中,因此不需要 LEFT
连接,使用 INNER
连接.
参见 demo.