我有一個GREATEST()和LEFT JOIN語句的問題,看起來像它與不同版本的MySQL有關。我有一張儲存school_id和school_type的表格。有4種學校類型,每種學校類型都有獨立的桌子。我有一個查詢,將根據學校類型從單獨的表格中提取所有學校名稱。因此,我們有如下表:MySQL - 使用GREATEST()和LEFT JOIN返回NULL的問題
tbl_report(學生證的商店列表和類型) tbl_grad_school tbl_lang_school tbl_high_school
MySQL的聲明將拉動學校相對於學校的類型名稱(,再加上從tbl_report其他一些細節因此,這裏是我:
SELECT
GREATEST(s1.school_name, s2.school_name, s3.school_name) as `school`,
tbl_report.school_id,
tbl_report.school_type,
tbl_report.date,
FROM tbl_report
LEFT JOIN tbl_grad_school AS s1 ON tbl_report.school_id=s1.id AND tbl_report.school_type=1
LEFT JOIN tbl_lang_school AS s2 ON tbl_report.school_id=s2.id AND tbl_report.school_type=2
LEFT JOIN tbl_high_school AS s3 ON tbl_report.school_id=s3.id AND tbl_report.school_type=3
所討論的問題是
GREATEST(s1.school_name, s2.school_name, s3.school_name) as `school`
當使用MySQL版本4.x這工作正常,它正確抓取名稱,只選擇非空列。但是當使用MySQL 5.x時,總是顯示NULL。如果我做一個SELECT,分別拉出s1.school_name,s2.school_name等,我可以看到非NULL列很好,但使用GREATEST不起作用。
任何想法發生了什麼?這是我在整個程序中經常使用的MySQL代碼中非常重要的一部分。