如果是另一个查询的结果,则查询 select Id

Query to select Id if in result of another query

我正在尝试 select 来自 table 的 ID,如果它们是通过对另一个 table 的查询找到的(我的最终目标是从第二个 table, 第一个查询中带有 id 的行)。这是我的尝试:

SELECT @MyList:=GROUP_CONCAT(Id SEPARATOR ', ') AS MyList
FROM myitems
WHERE MyString IS NULL OR MyString = '';

所以 @MyList 包含 '41, 42, 49, 51'

查询基于FIND_IN_SET returns只有一行

SELECT Id
FROM myitems2
WHERE FIND_IN_SET(Id, @MyList) > 0;

预期结果:

41
42

Returns

41

如果我使用 IN:

我会得到相同的结果
SELECT Id
FROM myitems2
WHERE Id IN (@MyList);

我也尝试了基于 LOCATE 的查询,但它 returns ID 不在集合中:

SELECT Id
FROM myitems2
WHERE LOCATE(Id, @MyList) > 0;

预期结果:

41
42

Returns

1
2
4
5
9
41
42

如何解决我的疑问?

FIND_IN_SET 不起作用,因为逗号后有空格。

替换:

GROUP_CONCAT(Id SEPARATOR ', ')

作者:

GROUP_CONCAT(Id SEPARATOR ',')

或者你可以这样做:

SELECT Id
FROM myitems2
WHERE FIND_IN_SET(Id, replace(@MyList, ' ', ''));