0

選択が実行された後、「where句」の列「ポイント」が不明ですというエラーが表示されます

サブクエリから返された null レコードを含む行を外側のクエリから削除するにはどうすればよいですか? (結果を返すために実行する必要がある別のサブクエリがあるため、サブクエリを使用する必要があります)

SELECT  
   s.student_name_first,
   s.student_name_last,
   (
   SELECT sum(i.points)
   FROM incidents i
   WHERE i.student = s.id
   ) AS points
FROM students s
WHERE points IS NOT NULL
GROUP BY s.id

私も試しましたが、同じ結果でした

SELECT  
   s.student_name_first,
   s.student_name_last,
   (
   SELECT sum(i.points) AS points
   FROM incidents i
   WHERE i.student = s.id AND points IS NOT NULL 
   ) AS p
FROM students s
GROUP BY s.id

前もって感謝します


解決:

私が探していたのはHAVINGでした

SELECT  
   s.student_name_first,
   s.student_name_last,
   (
   SELECT COALESCE(sum(i.incident_points),0)
   FROM incidents i
   WHERE i.student = s.id
   ) as points
FROM students s
GROUP BY s.id
HAVING points > 0
4

1 に答える 1

2

問題は、句でSELECTエイリアスを使用できないことです。それらは にある必要があります。WHEREHAVING

しかし、内部結合を使用すると、そもそもヌル行は取得されません。

SELECT s.student_name_first,
       s.student_name_last,
       SUM(i.points) AS points
FROM students s
JOIN incidents i
ON i.student = s.id
GROUP BY s.id
于 2013-07-16T05:39:48.670 に答える