我想在另一个查询中使用一个查询的结果。以前有人问过这个问题,但答案并没有帮助我找到解决方案。
第一个查询如下所示:
SELECT ID FROM table_1 WHERE post_status = 'wc-completed';
我可以把它放在一个变量中:
set @variable =(SELECT ID FROM table_1 WHERE post_status = 'wc-completed');
第二个查询如下所示:
SELECT * FROM table_2 WHERE post_id IN (1,2,3,4...);
我想,这可以工作:
set @variable =(SELECT GROUP_CONCAT(ID) FROM table_1 WHERE post_status = 'wc-completed');
SELECT * FROM table_2 WHERE post_id IN (@variable);
但它只使用第一个值。结果可能被视为字符串而不是值数组。谁能指出我正确的方向?
不需要Group_concat
并直接在选择中使用第一个选择
喜欢
SELECT
*
FROM table_2
WHERE
post_id IN (
SELECT
ID
FROM
table_1
WHERE
post_status = 'wc-completed'
)
不需要GROUP_CONCAT()
使用查询的结果,因为它在IN
子句中:
SELECT * FROM table_2 WHERE post_id IN (
SELECT ID FROM table_1 WHERE post_status = 'wc-completed'
)
但也要考虑EXISTS
哪个可以表现得更好:
SELECT t2.* FROM table_2 t2
WHERE EXISTS (
SELECT 1 FROM table_1 t1
WHERE t1.post_status = 'wc-completed' AND t1.ID = t2.post_id
)