3

次のmysqlクエリがあります:

SELECT count(student_name) AS total_student,school_name FROM `student` 
LEFT JOIN school_info ON school_info.school_id=student.school_id
WHERE student.status='0'

戻り値:

total_student   school_name
  0               NULL

私が達成しようとしているのは、total_student = 0 の場合、値がないか NULL を表示することです

total_student   school_name 

やり方を教えてください。

ありがとう :)

4

3 に答える 3

7

GROUP BYまず、クエリの最後に group by の句がありませんschool_name

SELECT count(student_name) AS total_student, school_name
FROM student
    LEFT JOIN school_info ON school_info.school_id = student.school_id
WHERE student.status = '0'
GROUP BY school_name

次に、単純に total_student = 0 の行を表示したくない場合は、MySQL HAVING 句を使用できます。

SELECT count(student_name) AS total_student, school_name
FROM student
    LEFT JOIN school_info ON school_info.school_id = student.school_id
WHERE student.status = '0'
GROUP BY school_name
HAVING count(student_name) > 0

または、この場合、 に変更LEFT JOININNER JOINて同じことを達成することもできます。

最後に、代わりに 0 を null に置き換えたいが行が残っている場合は、合計を取得する select ステートメントを次のように更新できます。

SELECT IF(COUNT(student_name) = 0, NULL, COUNT(student_name)) AS total_student, school_name
于 2013-02-03T17:21:47.103 に答える
1

HAVING 句を追加して、0 行を除外します。

SELECT count(student_name) AS total_student,school_name FROM `student` 
LEFT JOIN school_info ON school_info.school_id=student.school_id
WHERE student.status='0'
HAVING total_student > 0
于 2013-02-03T17:26:25.100 に答える
0

CASE 構文を使用してみてください: http://dev.mysql.com/doc/refman/5.0/en/control-flow-functions.html

于 2013-02-03T17:25:48.627 に答える