Database-Design
與子查詢結合使用時,IN 和 ORDER BY 關鍵字的正確用法是什麼?
我想根據父母的姓氏訂購孩子。我正在嘗試使用以下查詢:
SELECT * FROM children WHERE parent_id IN (SELECT parent_id FROM parent ORDER BY lastName ASC);
SELECT parent_id FROM parent ORDER BY lastName ASC
按父母姓氏的順序返回 parent_ids(這是預期的行為)。parent_ids 根據他們的姓氏升序排列是154,156,155,157
如您所見,結果按 parent_id 的升序排列(不是孩子各自父母的姓氏)。
有沒有辦法在不改變我的設計的情況下正確地構造這個查詢?
謝謝你。
子選擇返回一個集合,它沒有順序,
order by
沒有用 - 它不會應用於最終結果集。如果您想通過“父母”的“姓氏”對“孩子”進行排序,則必須通過連接兩個關係將這些“姓氏”投影到外部選擇:SELECT c.* FROM children c INNER JOIN parent p ON c.parent_id = p.parent_id ORDER BY lastName ASC