mysql 子查询中结果的顺序会影响实际查询的顺序吗?我试过了,但没有得到真正的结果,因为有时看起来如此,有时却不然。
例如:
SELECT name FROM people WHERE pid IN (SELECT mid FROM member ORDER BY mdate)
在这种情况下,“order by”子句会影响结果的顺序吗?
谢谢。
mysql 子查询中结果的顺序会影响实际查询的顺序吗?我试过了,但没有得到真正的结果,因为有时看起来如此,有时却不然。
例如:
SELECT name FROM people WHERE pid IN (SELECT mid FROM member ORDER BY mdate)
在这种情况下,“order by”子句会影响结果的顺序吗?
谢谢。
您的外部查询没有ORDER BY
; 因此,无法保证顺序。
我想在这种特殊情况下唯一可能受到影响的部分是优化器,它可能会生成不同的执行计划,具体取决于子查询结果的排序方式......
不,它不能,如果您想根据需要更改订单,那么最好使用JOIN
像这样的东西: -
select name
from people p inner join member m on p.pid = m.mid
order by p.name
无论外部查询结果是否依赖于子查询中的 order by 子句,都不应依赖于 order。如果您需要外部查询结果的任何特定顺序,则应在外部查询上显式使用 order by 子句。AFAK,仅当您必须在子查询的 SELECT 子句中使用 TOP 子句时,在子查询中使用 order by 子句才有意义。
实在不行。数据来自from
子句。您的子查询在where
子句中。它仅用于过滤行。如果您要订购:
select p.name
from people p join
(select member, min(mdate) as minmdate
from member
group by member
) m
on p.pid = m.mid
order by minmdate;
也就是说,加入两个表之间的结果。我假设member
可能有重复,并且您希望与每个成员相关联的最早日期。