php - 覆盖外连接失败的记录的默认值

标签 php mysql join

我有这个 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/

相关文章:

php - csv 导入期间的纬度/经度查找

php - 如何使用 php 和 Linux 永久持续监控套接字

javascript - PHP 执行时 <a> 链接到其他页面

php - mysql 查询 - ORDER BY Case 条件

选择连接中的mysql子查询

Javascript 拆分、推送和连接

php - 从Mysql获取每组最小值的总和

mysqldump 不适用于全文索引?

php - 使用 PHP 显示存储在 mySQL 数据库中的图像

MySQL 使用关系从第二个表中选择 DISTINCT 字段