我有这个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
取值。
答案 0 :(得分:1)
您可以在请求中使用IF:
例如:
// Condition //Succeded //FAILED
SELECT IF (forname = '', organizer, forname) FROM ......
答案 1 :(得分:1)
无法满足加入条件的记录在NULL
表的每一列中都有user
,包括在加入条件本身中使用的那些列。你可以这样使用这个事实:
IF(user.id IS NULL, event.organizer, GROUP_CONCAT(forname, ' ', surname SEPARATOR ', '))