簡體   English   中英

使用GROUP_CONCAT輸出進行子查詢

[英]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' );

參考MySQL字符串函數:FIND_IN_SET()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM