1

これは私が今私のクエリに持っているものです:

+--------------------+-----------+------------+
| status             | entity_id | seconds    |
+--------------------+-----------+------------+
| Submitted          |       494 | 1352102400 |
| Accepted           |       494 | 1352275200 |
| In press/e-publish |       494 | 1352966400 |
| Rejected           |       520 | 1355817600 |
| Accepted           |       570 | 1352102400 |
+--------------------+-----------+------------+

私はそれが次のようになりたい:

+--------------------+-----------+------------+
| status             | entity_id | seconds    |
+--------------------+-----------+------------+
| In press/e-publish |       494 | 1352966400 |
| Rejected           |       520 | 1355817600 |
| Accepted           |       570 | 1352102400 |
+--------------------+-----------+------------+

準 SQL の場合:

SELECT status, entity_id, MAX(seconds) 
FROM foo
GROUP BY entity_id, seconds

上記の準 SQL は正しいように見えますが、「ステータス」列の値が正しい行に対応していません。以下のようなものが返ってきます。

+--------------------+-----------+------------+
| status             | entity_id | seconds    |
+--------------------+-----------+------------+
| Submitted          |       494 | 1352966400 |
| Rejected           |       520 | 1355817600 |
| Accepted           |       570 | 1352102400 |
+--------------------+-----------+------------+
4

2 に答える 2

6

テストされていませんが、次のようになります。

SELECT status, entity_id, seconds
FROM entities E
WHERE E.seconds == (
  SELECT MAX(E2.seconds)
  FROM entities E2
  WHERE E2.entity_id = E.entity_id
)

(あなたの質問にSQLfiddleを設定すると、よりテストされた答えが得られます:p)

于 2012-12-20T00:48:59.947 に答える
3

以下のクエリは、期待される結果を提供します。

SELECT max(maxsec), status, entity_id from 
(SELECT status, entity_id, MAX(seconds)  as maxsec
FROM table1
GROUP BY entity_id,status) a GROUP BY entity_id

ここに作成されたスキーマ。

于 2012-12-20T04:21:12.893 に答える