在 MySQL 中加入 CASE
Posted
技术标签:
【中文标题】在 MySQL 中加入 CASE【英文标题】:Joining on a CASE in MySQL 【发布时间】:2010-11-11 07:40:59 【问题描述】:尝试在 mysql 中实现多态关联。我认为代码可能看起来像这样:
SELECT
...
FROM
resource
LEFT JOIN (
CASE resource.owner_type
WHEN 'meeting' THEN
( SELECT * FROM meeting ) as owner
WHEN 'todo' THEN
( SELECT * FROM todo ) as owner
END)
但 CASE 导致语法错误。如何正确重写?
【问题讨论】:
相关***.com/questions/1255492/conditional-join-in-mysql 一个问题是确保您在输出中有一组一致的列 - 您不能让会议行包含与待办事项行不同的列数。 【参考方案1】:简短的回答是您不能逐行替换联接 - 但我相信这是您想要实现的解决方案:
SELECT
...
FROM
resource
LEFT JOIN meeting ON resource.id=meeting.resource_id
WHERE resource.owner_type='meeting'
UNION
SELECT
...
FROM
resource
LEFT JOIN todo ON resource.id=todo.resource_id
WHERE resource.owner_type='todo'
【讨论】:
以上是关于在 MySQL 中加入 CASE的主要内容,如果未能解决你的问题,请参考以下文章