簡體   English   中英

如何在另一個查詢中使用 SELECT 查詢的結果

[英]How to use result from SELECT query in another one

我需要在另一個查詢中使用選定的行,而不是再次選擇它們作為子查詢。 如果可以在這里將它們存儲為變量,那將是完美的。

我的意思是說:

/* First query: only one column returns (always), but multiple records, trying to store them as string */
SET @result := (SELECT GROUP_CONCAT(target_field SEPARATOR ',')
FROM table_one
WHERE condition;

/* Second query: need to pass saved array into IN() condition */
SELECT *
FROM table_two
WHERE id IN(@result);

但突然它不起作用,因為@result作為一個字符串值處理,而不是作為數組處理。

是否可以將變量作為數組傳遞? 允許任何替代解決方案(子查詢除外)。

您可以在 where 條件中使用子查詢。 這對於mySql應該沒問題

SELECT *
FROM table_two
WHERE id IN(SELECT id from table_one where condition_one);

在這種情況下可以使用表之間的JOIN

SELECT *
FROM table_two
JOIN table_one ON table_two.id = table_one.target_field
WHERE table_one condition;

您可以使用 function FIND_IN_SET()

SELECT *
FROM table_two
WHERE FIND_IN_SET(id, @result);

如果不允許子查詢,您可以使用存儲過程:

嘗試:

DELIMITER //
CREATE PROCEDURE my_procedure()
BEGIN
SET @result = "SELECT GROUP_CONCAT(target_field SEPARATOR ',') FROM table_one WHERE condition";
SET @finalqry = CONCAT("SELECT * FROM table_two WHERE id IN (", @result, ") ");
PREPARE stmt FROM @finalqry;
EXECUTE stmt;
END//
DELIMITER ;

叫它:

call my_procedure();

暫無
暫無

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

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