3

「トピック」と「サブカテゴリ」の 2 つのテーブルがあります。

私はこのクエリを使用しています--

Select * from `subcategory` as s 
Inner join `topic` as f
WHERE s.`Subcategory_id` = f.`Subcategory_id

私の結果は次のように表示されます

Category_id Subcategory_id Post_id 時間

    2        2.3         4    2012-12-01
    1        1.5         5    2013-01-20
    1        1.3         6    2013-03-18

他の列もあります...しかし、私が望むのは、1つのCategory_idの最新のPost_idとSubcategory_idを選択することだけです...つまり、ここではCategory 1に2つのSubcategoryがあり、最新(ここでは1.3)と常に同じ結果のみが選択されますデータベースが大きくなる場合のすべてのカテゴリ。次のクエリは何ですか、または既存のクエリを変更して目的の結果を得るにはどうすればよいですか?

4

3 に答える 3

2
SELECT TOP 1 ... ORDER BY whatever column determines "the latest"

例えば

SELECT TOP 1 ... ORDER BY TIME DESCENDING

またはmysqlの場合:

SELECT ... ORDER BY TIME DESCENDING LIMIT 1
于 2013-03-19T04:59:29.033 に答える
2
SELECT Post_Id, Subcategory_Id from subcategory as s, topic as t where 
   s.Subcategory_id = t.Subcategory_id and time = (
      SELECT Max(time) from subcategory as s1, topic as t1 where 
         s1.Subcategory_id = t1.Subcategory_id and s1.Category_id = s.Category_id
   );

そのようなものはうまくいくと思います。

于 2013-03-19T05:10:40.630 に答える
0

次のクエリでトピックテーブルに参加します。

SELECT s.* FROM subcategory s
    Inner JOIN (SELECT s1.Category_id,
                 MAX(s1.time1) AS max_time
                 FROM subcategory s1
                 GROUP BY s1.Category_id) y 
ON y.Category_id = s.Category_id AND y.max_time = s.time1
于 2013-03-19T05:21:50.117 に答える