加入MySQL中的CASE

时间:2010-11-11 07:40:59

标签: mysql associations polymorphism

尝试在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导致语法错误。如何正确地重写?

1 个答案:

答案 0 :(得分:0)

简短的回答是你不能逐行替换联接 - 但我相信这是你想要实现的目标的解决方案:

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'