特定カラムの重複なしで最新レコードを取得

備忘録メモメモ。

  • テーブルはarticleとcontents
  • 主キーはarticle.no
  • article.noContentsの重複をなくしたい
  • 最新レコードの判断はarticle.datetimesで判断
SELECT
A.no,
A.noContents,
A.datetimes,
A.title,
A.body,
A.aword,
A.flgOpen,
contents.name,
contents.aword as aword_contents,
contents.contents
FROM article AS A, contents
WHERE A.noContents = contents.no
AND   A.flgOpen    = 1
AND   NOT EXISTS
(
	SELECT no FROM article AS B
	WHERE A.datetimes  < B.datetimes
	AND   A.noContents = B.noContents
)
ORDER BY A.datetimes DESC

1テーブルでやる場合は

SELECT
no,
noContents,
datetimes,
title,
body,
aword,
flgOpen
FROM article AS A
WHERE NOT EXISTS
(
	SELECT no FROM article AS B
	WHERE A.datetimes  < B.datetimes
	AND   A.noContents = B.noContents
)
ORDER BY datetimes DESC