0

以下に示すのは私のmysqlクエリです

SELECT mail FROM table2 WHERE wid IN
(SELECT DISTINCT Id FROM table1 
WHERE time_stamp>=DATE_SUB(NOW(),INTERVAL 10 MINUTE) AND status<>200 
ORDER BY time_stamp ASC)
LIMIT 2");

これは常に正常に機能する2つのエントリを取得しますが、昇順ではありません。クエリは、順序付けを行わずに常に最初の行から行を選択します(制限は最初の行からのみ開始されることがわかっています)。IDtime_stamp を昇順で並べ替えた後、テーブル 1 からを取得する必要があります。

問題:-テーブル 1 の time_stamp 列に関して昇順でテーブル 1 を並べ替える必要があります。その中から最初の 2 つのエントリを選択します。table2 から電子メール ID を見つけます

4

1 に答える 1

3

ORDER BY time_stamp ASCサブクエリ用に追加しています。

レコードを順序付けするには、句ORDER BY wid ASCの外に追加する必要があります。IN

また

に従ってソートされたレコードを取得するには、 LEFT OUTER JOINORを使用します。INNER JOINtimestamp

編集

SELECT
    mail
FROM
    table2
INNER JOIN
    table1 ON table2.wid = table1.id
WHERE
    table1.time_stamp >= DATE_SUB(NOW(),INTERVAL 10 MINUTE)
AND
    table1.status<>200
ORDER BY
    table1.time_stamp ASC
LIMIT 2
于 2013-09-10T06:42:30.217 に答える