私の MySQL データベースには、id、name、data、および location の 4 つのフィールドを持つテーブル (cfg) があります。この 1 つのテーブルは、複数のサブドメイン (location) にサービスを提供するためのものです。特定のサブドメイン (場所) の名前ごとに最新の行のリストを取得する必要があります。
サンプルデータ
id name data location
---------------------------
1 color red dc
2 color blue dc
3 size large sj
4 color green sj
5 size small dc
次のクエリは正常に機能しますが、複雑すぎて処理が遅いようです。誰か提案がありますか?
SELECT c1.name, c1.data
FROM (SELECT * FROM cfg WHERE location = "dc") as c1
LEFT JOIN (SELECT * FROM cfg WHERE location = "dc") as c2 ON ( c1.name = c2.name
AND c1.id < c2.id )
WHERE c2.id IS NULL
それは戻るだろう
name data
--------------
color blue
size small