[英]Using GROUP_CONCAT output for subquery
我遇到了問題,查詢中包含以下行
CONCAT('',
(SELECT GROUP_CONCAT(DISTINCT trips_loads_rel.load_id,'') AS x
FROM `trips_loads_rel` WHERE trips_loads_rel.trip_id = trips.Id)
) AS loads
它顯示類似於8,10,27
(即數字ID)的內容,還有trips_loads_rel
表中的一些ID。 可以。 但是,如何使用該輸出從其他表中提取匹配的記錄? 我的意思是,該行向我顯示了所有ID,但我需要使用這些查詢其他表以提取相關記錄。 實際上,我不需要這些ID,我需要它們的匹配記錄...
嘗試這個:
SELECT * FROM <other_table> WHERE <other_table>.load_id IN(CONCAT('',
(SELECT GROUP_CONCAT(DISTINCT trips_loads_rel.load_id,'') AS x
FROM `trips_loads_rel` WHERE trips_loads_rel.trip_id = trips.Id)
) AS loads)
它看起來像是查詢的一部分,而不是整個查詢的一部分,因此很難顯示確切的語法,但是如果您想使用這些值來查找其他行,請不要對它們進行分組以開始。
而是直接使用它們做類似的事情;
SELECT * FROM `other_table` WHERE `other_table`.`load_id` IN
(SELECT `load_id` FROM `trips_loads_rel` WHERE `trip_id` = `trips`.`Id`)
您可以使用FIND_IN_SET(col, 'csv as string')
函數獲得所需的結果。
范例 :
mysql> select find_in_set( 2, '11,12,13,14,15,2' );
+--------------------------------------+
| find_in_set( 2, '11,12,13,14,15,2' ) |
+--------------------------------------+
| 6 |
+--------------------------------------+
1 row in set (0.00 sec)
mysql> select find_in_set( 2, '2,11,12,13,14,15,2' );
+----------------------------------------+
| find_in_set( 2, '2,11,12,13,14,15,2' ) |
+----------------------------------------+
| 1 |
+----------------------------------------+
1 row in set (0.00 sec)
mysql> Select FIND_IN_SET( 6, '1,12,3,14,5,16,7,18,9,0,2,13,4,15,6,17,8' );
+--------------------------------------------------------------+
| FIND_IN_SET( 6, '1,12,3,14,5,16,7,18,9,0,2,13,4,15,6,17,8' ) |
+--------------------------------------------------------------+
| 15 |
+--------------------------------------------------------------+
1 row in set (0.00 sec)
mysql>
對於查詢,您可以傳遞連接的輸出'8,10,27'
與other_table的列進行比較。
Select find_in_set( other_table.col_name, '8,10,27' );
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.