1

ねえ、私はこれのSQLコードを理解しようとしています:

4つの列があると仮定します:

ID  NAME  EMAIL
1   Mike  mike@mike.com
2   Bob   bob@bob.com
3   Chris
4   Matt

メールからnullではない最後のエントリを選択したいので、この場合はbob@bob.comを探します。Coalesceを試しましたが、列から値が得られたように見えましたが、最後に入力されたものではありませんでした。MAX は ID にのみ使用されると思います。何かご意見は?

4

1 に答える 1

0

のみを返すサブクエリに対して結合することにより、MAX(ID). GROUP BYこれは MySQL では必要ありませんが、他の多くの RDBMS では、句にも含まれていない場合、集計以外の列を含めることはできません。

SELECT yourtable.*
FROM
  yourtable
  JOIN (SELECT MAX(ID) AS ID FROM yourtable WHERE EMAIL IS NOT NULL) maxid ON yourtable.ID = maxid.ID

注: どちらの場合でも、これIDは、自動インクリメント列であり、以前の ID が削除された行を挿入して干渉していない場合にのみ確実に機能します。

于 2012-08-17T02:34:56.977 に答える