5

mysql サブクエリ内の結果の順序は、実際のクエリの順序に影響しますか? 私はそれを試しましたが、実際の結果には至りませんでした。そう見える場合とそうでない場合があります。

例えば:

SELECT name FROM people WHERE pid IN (SELECT mid FROM member ORDER BY mdate)

この場合、「order by」句は結果の順序に影響しますか?

ありがとう。

4

4 に答える 4

3

いいえ、できません。必要に応じて順序を変更したい場合は、JOIN

このようなもの:-

select name 
from people p inner join member m on p.pid = m.mid
order by p.name
于 2013-09-08T14:42:35.583 に答える
1

それは本当にできません。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重複する可能性があり、各メンバーに関連付けられた最も早い日付が必要であると想定しています。

于 2013-09-08T14:51:22.023 に答える
1

外部クエリの結果がサブクエリの order by 句に依存するかどうかに関係なく、順序に依存するべきではありません。外側のクエリ結果の特定の順序が必要な場合は、外側のクエリで order by 句を明示的に使用する必要があります。AFAK、サブクエリの SELECT 句で TOP 句を使用する必要がある場合にのみ、サブクエリで order by 句を使用するのが理にかなっています。

于 2013-09-08T14:49:46.227 に答える