1

重複の可能性:
集計関数または GROUP BY 句のいずれにも含まれていないため、列は選択リストで無効です

私は SQL クエリの初心者です。次のエラーが表示されます。

「DESCRIPTION' は、集計関数または GROUP BY 句のいずれにも含まれていないため、選択リストでは無効です」

適切な集計関数が見つかりません。unique(DESCRIPTION)selectステートメントのようなものが必要です

私の説明列は一意の varchar 値です。何か考えはありますか?

INSERT INTO myTable2 (ID,INDEX,STATUS,DESCRIPTION,TS)
SELECT ID,min(INDEX),STATUS,DESCRIPTION,min(TS) from myTable2 t1top
WHERE (EXISTS(
        SELECT * FROM myTable1 WHERE ID=t1top.ID AND STATUS='Completed' )) 
GROUP BY ID, STATUS
ORDER BY ID  DESC, STATUS DESC
4

2 に答える 2

0

SELECT DISTINCT 記述を使用できます。またはこのようなもの:

INSERT INTO myTable2 (ID,INDEX,STATUS,DESCRIPTION,TS)
SELECT ID, min(INDEX), STATUS, DESCRIPTION, min(TS) 
    FROM myTable2 t1top
WHERE (EXISTS(
        SELECT * FROM myTable1 WHERE ID=t1top.ID AND STATUS='Completed' )) 
GROUP BY ID, STATUS, DESCRIPTION
ORDER BY ID  DESC, STATUS DESC

覚えておくべき重要な点は、集計クエリで選択するすべてのフィールドは、SUMMAXなどの集計関数内にある、group-by 句に含まれている必要があるということです。これは、MySql とは異なります。MySql はクエリに対してそのルールを適用せず、単に予測できない結果を返すだけです。

于 2012-06-02T20:06:03.397 に答える
0

GROUP BY リストに DESCRIPTION を追加してください。

INSERT INTO myTable2 (ID,INDEX,STATUS,DESCRIPTION,TS)
SELECT ID,min(INDEX),STATUS,DESCRIPTION,min(TS) from myTable2 t1top
WHERE (EXISTS(
    SELECT * FROM myTable1 WHERE ID=t1top.ID AND STATUS='Completed' )) 
GROUP BY ID, STATUS, DESCRIPTION
ORDER BY ID  DESC, STATUS DESC

しかし、それはあなたのクエリが正しいという意味ではありません - あなたが達成したいものに依存します

于 2012-06-02T20:24:10.497 に答える