2

1 つのクエリで結合したい MySQL に 2 つのテーブルがあります。

表 1 opc_tag:

id name

表 2 opc_data:

id tag_id value created_at

「 created_at 」フィールドに基づいて、opc_data の最後のレコードを含む opc_tag のすべての行を一覧表示したいと考えています。

Googleで検索しようとしましたが、うまくいきません。次のクエリは、opc_data-tableから複数のレコードを持つタグを選択しました。

SELECT t.*, d.*
FROM opc_tag t LEFT JOIN opc_data d ON t.id = d.tag_id
WHERE d.created_at = (
    SELECT MAX(d.created_at)
    FROM opc_data d2
    WHERE d2.tag_id = t.id
)
4

2 に答える 2

1

私はこれがそれを行うと思います:

SELECT t.*,d.* FROM opc_tag t 
LEFT JOIN opc_data d ON t.id = d.tag_id
WHERE d.created_at = (
    SELECT MAX(created_at) FROM opc_data WHERE tag_id = t.id
)
GROUP BY t.id

データのないものも含めてすべてのタグを表示したい場合は、where 句でこれを使用します。

WHERE d.created_at = (
    SELECT MAX(created_at) FROM opc_data WHERE tag_id = t.id
) OR d.created_at IS NULL
于 2013-08-09T10:09:12.543 に答える