2

データベースに 2 つのテーブルがあります。

カテゴリー

id
category
message

メッセージ

id
title
message

2 つのメッセージとそのカテゴリを取得しようとしています。すべてのメッセージは複数のカテゴリを持つことができます。私は次のクエリで試しました:

SELECT categories.category, messages.id, messages.title, messages.message
FROM categories
RIGHT JOIN messages
ON messages.id = category.message
ORDER BY messages.id DESC
LIMIT 2
OFFSET 0

この出力は次のようになります。

category   id   title        message
test-cat   1    Test title   This is the message body
category2  1    Test title   This is the message body

ただし、このクエリの結果は 2 行のみです (取得されるメッセージには複数のカテゴリがあるため)。カテゴリの数ではなく、メッセージの数を制限するにはどうすればよいですか? 結果は次のようになります。

category   id   title        message
test-cat   1    Test title   This is the message body
category2  1    Test title   This is the message body
test-cat   2    Another msg  This is content
test-cat2  2    Another msg  This is content
something  2    Another msg  This is content
4

1 に答える 1

3

制限をサブクエリに入れます。

SELECT categories.category, m.id, m.title, m.message
FROM categories RIGHT JOIN
     (select *
      from messages
      ORDER BY messages.id DESC
      limit 2
     ) m
     ON m.id = categories.message
ORDER BY m.id DESC
于 2012-07-23T20:04:52.850 に答える