我有这个 MySQL 查询:
SELECT event.*, GROUP_CONCAT(forname, ' ', surname SEPARATOR ', ') as real_name
FROM event LEFT JOIN user ON event.organizer = user.id
WHERE owner IS NOT NULL
GROUP BY event.id
ORDER BY startdatetime ASC
输出以 PHP 打印:
print($zeile['real_name'] == '' ? $zeile['organizer'] : $zeile['real_name']);
这工作得很好,但我问自己是否可以在 SQL 中实现三元运算。我的意思是说:
如果连接成功,结果集的 real_name
列将采用 GROUP_CONCAT(forname, ' ', surname SEPARATOR ', ')
的值,并且 event.organizer
如果没有。
最佳答案
无法满足连接条件的记录将在 user
表中的每一列中包含 NULL
,包括那些在连接条件本身中使用的记录。您可以这样使用这个事实:
IF(user.id IS NULL, event.organizer, GROUP_CONCAT(forname, ' ', surname SEPARATOR ', '))
关于php - 覆盖外连接失败的记录的默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29363546/