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」句は結果の順序に影響しますか?
ありがとう。
いいえ、できません。必要に応じて順序を変更したい場合は、JOIN
このようなもの:-
select name
from people p inner join member m on p.pid = m.mid
order by p.name
それは本当にできません。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;
つまり、2 つのテーブル間の結果を結合します。member
重複する可能性があり、各メンバーに関連付けられた最も早い日付が必要であると想定しています。
外部クエリの結果がサブクエリの order by 句に依存するかどうかに関係なく、順序に依存するべきではありません。外側のクエリ結果の特定の順序が必要な場合は、外側のクエリで order by 句を明示的に使用する必要があります。AFAK、サブクエリの SELECT 句で TOP 句を使用する必要がある場合にのみ、サブクエリで order by 句を使用するのが理にかなっています。