-1
入れ子になったJOINを使用しており、順序付けられた日付の列BOARDING_LAST_EDIT
を期待しています。ネストされたMySQL JOINは必要な列を生成しません
SELECT
OWNER.ID AS OWNER_ID,
OWNER.FIRST_NAME,
OWNER.LAST_NAME,
OWNER.EMAIL
FROM OWNER
LEFT JOIN (
SELECT OWNER_ID, LAST_EDIT AS BOARDING_LAST_EDIT
FROM BOARDING
WHERE BOARDING.LAST_EDIT > '2017-01-01'
ORDER BY BOARDING.LAST_EDIT DESC
) AS BOARDING_NESTED_TABLE_ORDERED
ON OWNER.ID = BOARDING_NESTED_TABLE_ORDERED.OWNER_ID
GROUP BY OWNER_ID
ORDER BY BOARDING_LAST_EDIT DESC
私はこれが返さ取得しています:
| OWNER_ID | FIRST_NAME | LAST_NAME | EMAIL |
欲しいもの: | OWNER_ID | FIRST_NAME | LAST_NAME | EMAIL | BOARDING_LAST_EDIT |
私は、ネストされた「BOARDING_LAST_EDIT AS 」が追加の列BOARDING_LAST_EDIT
にの全体のポイントを返すだろうと期待していた参加ネストされた - 結果は最初だけで、最新の日付の順にリターンをグループ化していることです。最新の日付より下の日付は削除できます。
テーブルをソートする前に参加すると、グルーピングで注文する能力が失われます。
はい! - それは私が望む結果を生む。私はフィールドリストが外部宣言の一部である必要があると思った。私は単に列 'LAST_EDIT'を最後の既知の日付の順に並べ、グループ化するだけです。私はこれを行う他の方法を考えることができませんでした。あなたの声明はこれを達成するための適切な方法のように見えますか?このクエリはかなり遅いようです。 –
"BOARDING_LAST_EDIT"はどのタイプのフィールドですか? OWNER_IDごとにグループ内の値のうち、最も高い値を取得するためにMAX()を使用できますか? –
'タイムスタンプ' –