MySQL子查询本身返回所有记录

标签 mysql sql subquery

以下查询返回所有结果,但根据我的理解应该返回与子查询相同的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/

相关文章:

mysql - 如何限制 MySQL 中的连接?

sql - sql中的IF/ELSE语句

mysql - 根据第一个查询答案连接两个 SQL 查询

sql - 有趣的多对多 sql 连接

mysql - 将 php 脚本转换为使用 mysql 中的 microsoft sql

MySQL从多个获取最后日期记录

mysql - 想要在最短的时间内使用 Excel 工作表中的值更新 MySQL 数据库

sql - 如何在 PostgreSQL 中使用 RETURNING 和 ON CONFLICT?

php - 转换时间格式为 HH :MM AM/PM to HH:MM:SS

php - 从多个类别获取主题并显示前十个主题以及 mysql/php 中的响应