0

私は2つのテーブルを持っています:

testテーブル:

Column                           Type                             Nullable Primary Key 
-------------------------------- -------------------------------- -------- ----------- 
id                               integer                                 0           1 
name                             varchar(255)                            1           0 
price                            varchar(255)                            1           0

行:

id name price
1  BMW  3000
2  AUDI  2500

test_2テーブル:

Column                           Type                             Nullable Primary Key 
-------------------------------- -------------------------------- -------- ----------- 
id                               integer                                 0           1 
ad_id                            integer                                 1           0 
user_id                          integer                                 1           0 
price                            integer                                 1           0 

行:

         id       ad_id     user_id       price 
----------- ----------- ----------- ----------- 
          1           1          23        2000 
          2           1          23        2200 
          3           1          22        2050 

私はこの結果を得る必要があります:

BMW 23 2200 
BMW 22 2050

私のSQL:

SELECT * FROM test, test_2 WHERE test_2.ad_id=test.id GROUP BY user_id ORDER BY test_2.price DESC

しかし、常にこのエラーが発生します:

ステートメントを実行できませんでした。
'id' への関数または列参照は、GROUP BY
SQLCODE=-149、ODBC 3 State="42000"
行 1、列 1 にも表示する必要があります

SQL Anywhere を使用しています。助けてくれてありがとう。

4

1 に答える 1

0

のすべての列はgroup by、集計関数とは別に select 句にある必要があります

SELECT test.name, test_2.user_id, max(test_2.price)
FROM test, test_2 
WHERE test_2.ad_id=test.id 
GROUP BY test.name, test_2.user_id
ORDER BY test_2.price DESC
于 2013-09-06T09:08:53.153 に答える