2

我有一个适用于 MySQL 的 Oracle SQL,但是当我在 Oracle 上运行时,我得到了“缺少右括号”。

我把它放在sqlfiddle

4

1 回答 1

4

Oracle 没有CASE像 MySQL 一样使用 or if 的简写方式。因此,您将不得不使用CASE您的内部sum

select p.id, p.name, 
  t.id as toyid, 
  t.name as toyname
from person p
inner join toys t on p.id = t.person_id
inner join 
(
  select person_id
  from toys 
  group by person_id
  having sum(case when name = 'hat' then 1 else 0 end) > 0 and
    sum(case when name = 'doll' then 1 else 0 end) > 0
) t2 
  on p.id = t2.person_id;

请参阅带有演示的 SQL Fiddle

于 2013-04-30T20:19:33.477 回答