2
SELECT DISTINCT 
           t1.name as t1_name, 
           MAX(t1.unit) as t1_unit, 
           MAX(t1.id_producer_goods) AS hi_id_producer_goods, 
          t2.name as t2_name 
FROM Table1 t1 
    left join Table2 t2 on t1.id_web_site=t2.id_web_site 
WHERE t1.id='23'  
GROUP BY t1.name

クエリを実行すると、次のエラーが表示されます。

Column 'Table2.name' is invalid in the select list because it is not contained 
in either an aggregate function or the GROUP BY clause.

このクエリの書き方

4

4 に答える 4

5

エラーはかなり明確です。集計関数を で使用するか、t2.nameに追加しGROUP BYます。探している結果によって異なります。

SELECT 
  t1.name as t1_name, 
  t2.name as t2_name,
  MAX(t1.unit) as t1_unit, 
  MAX(t1.id_producer_goods) AS hi_id_producer_goods
FROM Table1 hi 
left join Table2 t2 on t1.id_web_site=t2.id_web_site 
WHERE t1.id='23'  
GROUP BY t1.name, t2.name;

t2.nameの各グループから選択する値を知る必要があるため、エラーは理にかなっていますt1.namemaxminなどを選択する必要がありますGROUP BY

DISTINCTまた、必要のない をで削除しGROUP BYます。

于 2013-10-01T12:16:08.293 に答える
1
SELECT 
t1.name as t1_name, 
MAX(t1.unit) as t1_unit, 
MAX(t1.id_producer_goods) AS hi_id_producer_goods, 
t2.name as t2_name FROM Table1 hi 
left join Table2 t2 on t1.id_web_site=t2.id_web_site 
WHERE 
t1.id='23'  
GROUP BY t1.name,t2.name

AGG 関数で使用されていないすべてのフィールドでグループ化する必要があります。等 MAX

于 2013-10-01T12:16:19.037 に答える
0

これを試して

SELECT 
DISTINCT 
t1.name as t1_name, 
MAX(t1.unit) as t1_unit, 
MAX(t1.id_producer_goods) AS hi_id_producer_goods, 
t2.name as t2_name FROM Table1 hi 
left join Table2 t2 on t1.id_web_site=t2.id_web_site 
WHERE 
t1.id='23'  
GROUP BY t1.name,t2.name

2 つの列で集計関数を使用している場合は、両方の列でグループ化する必要があります

于 2013-10-01T12:17:17.813 に答える
0

ここで DISTINCT キーワードは必要ないと思います。

           SELECT 
           t1.name as t1_name, 
           MAX(t1.unit) as t1_unit, 
           MAX(t1.id_producer_goods) AS hi_id_producer_goods, 
          t2.name as t2_name 
FROM Table1 t1 
    left join Table2 t2 on t1.id_web_site=t2.id_web_site 
WHERE t1.id='23'  
GROUP BY t1.name,t2.name
于 2013-10-01T12:25:06.300 に答える