mysql - 如果 mysql 中不存在则设置另一个值

标签 mysql database

SELECT subjects.name as name , grades.grade as grade,  concat(instructors.lastname, ", ", instructors.firstname , " ", left(instructors.middlename, 1),".") as instructor
    FROM subjects
    JOIN grades
    JOIN instructors
    WHERE grades.student_id = 1 AND subjects.id = grades.subject_id AND instructors.subject_id = subjects.id

结果是

English    Instructor    Grade
Math       Instructor    Grade

但是我想要的是在还没有导师的科目中给出“N/A”。示例

English    Instructor    Grade
Math       Instructor    Grade
Science    N/A           Grade
History    N/A           Grade

如何在 mySQL 中设置条件,以便结果与上面的示例完全相同?

提前致谢

最佳答案

LEFT JOIN 而不是 INNER JOIN,如下所示:

SELECT 
  s.name as name , 
  g.grade as grade,  
  IFNULL(concat(i.lastname, ", ", i.firstname, ...), 'N/A') as instructor
FROM subjects s
LEFT JOIN grades g ON g.subject_id = s.id 
LEFT JOIN instructors i ON g.subject_id = i.subject_id ;

SQL Fiddle Demo

请注意:您编写JOIN的方式不正确。 JOIN 子句之后没有 ON 子句。您必须将连接条件放在 ON 子句之后。

关于mysql - 如果 mysql 中不存在则设置另一个值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13701330/

相关文章:

mysql - MySQL 中何时使用单引号、双引号和反引号

mysql - 无法将mysql时区设置为马德里

regex - 生成基于正则表达式的字符串的所有可能组合的列表

mysql - 如何使用 Laravel Eloquent ORM 将数组值插入到我的表中?

mysql - 将动态行转换为列

Java,MySQL : myStatement.executeUpdate INSERT INTO 给出 NullPointerException

database - 尝试删除结构时出现 Ecto 约束错误

php - ID 的唯一性

database - 如何引用 Realm 中已经创建的对象?

mysql - 获取同一个表中的相关行?