以下查询返回所有结果,但根据我的理解应该返回与子查询相同的ID。有人可以解释为什么返回所有 ID 的子查询(单独运行时)返回所有记录
select mya.id from mytable mya WHERE mya.id IN (
SELECT myb.id
FROM mytable myb
GROUP BY myb.mysecondcolumn
)
作为单独查询运行时,子查询将返回 1,5,10,15,但是当我在上面运行此查询时,它会返回 1,2,3,4,5,...
谢谢!
最佳答案
您的查询格式不正确。您需要在子查询中使用聚合函数。也许:
select mya.id
from mytable mya
where mya.id in (SELECT MIN(myb.id)
FROM mytable myb
GROUP BY myb.mysecondcolumn
);
这并不能解释您的实际问题。我的猜测是子查询返回所有 id,但顺序不同。您可以通过查看以下结果来检查是否属于这种情况:
SELECT MIN(myb.id)
FROM mytable myb
GROUP BY myb.mysecondcolumn
ORDER BY MIN(myb.id)
关于MySQL子查询本身返回所有记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56258289/