0

次のようなクエリを実行したい:

SELECT id 
FROM reparacoes 
WHERE edit_data= (select max(edit_data) 
                  from reparacoes 
                  where id_reparacao= (select id_reparacao from reparacoes));

ただし、サブクエリselect id_reparacao from reparacoesは (予想どおり) 複数の行を返し、クエリは機能しません。でこれを行う必要がありjoinsますか?はいの場合、どのように?

これがどのように機能するかです:「reparacoes」行を(私のウェブサイトで)編集するたびにINSERT、新しい行(私はしませんUPDATE)と新しいIDが作成され、edit_data(編集の日時です) ) しかし、id_reparacoes は同じままです。

edit_data が特定の id_reparacao から最新のものである reparacoes から ID を返すクエリが必要です。しかし、私は複数の id_reparacao を持っており、これですべての id_reparacao を照会したい (それが私が試した理由です)...where id_reparacao= (select id_reparacao from reparacoes)

PS:申し訳ありませんが、これはすでに何度も質問/回答されていることを知っていますが、私を助けることができるものは何も見つかりませんでした.

4

5 に答える 5

3

私はあなたがこのようなものが欲しいと思います:

SELECT  rep.ID
FROM    reparacoes rep
        INNER JOIN
        (   SELECT  id_reparacao, MAX(Edit_Data) AS Edit_Data
            FROM    reparacoes
            GROUP  BY id_reparacao
        ) MaxRep
            ON MaxRep.id_reparacao = rep.id_reparacao
            AND MaxRep.Edit_Data = rep.Edit_Data;

サブクエリは単純に最後のedit_dataperを取得しid_reparacao、次に実行しINNER JOINてテーブルに戻ることでEdit_data、最新の per に一致する行のみに行を制限しますid_reparacao

于 2013-06-27T11:41:31.913 に答える
0

クエリで何を返したいかを完全に理解しているかどうかはわかりません。目標を言葉で説明していただけると助かります。

個別の id_reparacao ごとに最大の編集データを持つ ID を取得する場合は、次のようにします。

SELECT id 
FROM reparacoes outerquery
WHERE edit_data = (SELECT max(edit_data) 
                   FROM reparacoes innerquery
                   WHERE innerquery.id_reparacao = outerquery.id_reparacao)
于 2013-06-27T11:30:29.540 に答える
0

内部クエリが複数の行を返す場合にin代わりに使用します。=

SELECT id 
FROM reparacoes 
WHERE edit_data in 
        (select max(edit_data) 
         from reparacoes 
         where id_reparacao in
                 (select id_reparacao from reparacoes)
        );
于 2013-06-27T11:27:11.510 に答える
0

あなたが望むのはこれだと思います:

SELECT id
 FROM reparacoes
 WHERE edit_data = (
   SELECT max(edit_data)
   FROM reparacoes
);
于 2013-06-27T11:31:26.000 に答える
-1

単一列のデータを比較する場合は、以下のクエリを使用します。

SELECT id FROM reparacoes WHERE edit_data= (select max(edit_data) from reparacoes);

複数のレコードから比較する場合は、以下のクエリを使用します。

SELECT id FROM reparacoes WHERE edit_data IN (select edit_data from reparacoes);
于 2013-06-27T11:36:58.803 に答える