如果不返回任何内容,则返回MySQL
我正在尝试做一些优化,目前post mysql的工作是在结果上设置一个新的参数如果不返回任何内容,则返回MySQL,mysql,Mysql,我正在尝试做一些优化,目前post mysql的工作是在结果上设置一个新的参数$class\u subject。。。所以我尝试在mysql中计算出这个值 SELECT class_grade.results as results, subjects.subject as subject, subjects_pseudonyms.pseudonym as pseudonym, IF(
$class\u subject
。。。所以我尝试在mysql中计算出这个值
SELECT
class_grade.results as results,
subjects.subject as subject,
subjects_pseudonyms.pseudonym as pseudonym,
IF( subjects_pseudonyms.pseudonym = null, subjects.subject, subjects_pseudonyms.pseudonym ) as class_subject
FROM
class_grade
INNER JOIN class ON class_grade.class_ID = class.class_ID
INNER JOIN subjects ON class.subject_ID = subjects.a_ID
LEFT JOIN subjects_pseudonyms ON class.subject_pseudonym_ID = subjects_pseudonyms.a_ID
WHERE
class_grade.teacher_ID = :teacher_id AND
class_grade.class_ID = :current_class_ID AND
class_grade.report_set_ID = :report_set_ID AND
class_grade.student_ID = :current_student_ID
在上面的查询中,笔名
可能为空,如果是这样,我试图将一个新变量class_subject
设置为subject
或笔名
查询运行正常,结果示例如下:
[results] => 71
[subject] => Law
[pseudonym] =>
[class_subject] =>
问题是,class\u主题
没有被填充
我的IF()条件有问题吗
谢谢,
John您需要使用
IS NULL
而不是=NULL
或ISNULL()
可以使用ISNULL()代替=来测试值是否为NULL。
(使用=始终将值与NULL进行比较会产生false)
您是否尝试过使用条件主题\u笔名。笔名为空?(so IS而不是=)我不完全确定我是否遵循了,你的意思是只选择
受试者。受试者如果受试者\u笔名。笔名为空?只需在条件中用IS关键字替换=符号,这是我的建议。:)太棒了,谢谢你的款待!哈,我是如此接近。