4

我可以在 sybase 中做到这一点,我可以在 oracle 中做到这一点,但我没有看到如何在 mysql 中做到这一点。

我有这个:(请克制自己不要重新格式化我的sql,上次有人这样做他们改变了它,所以它不一样,使问题变得毫无意义)

select table1.id
from
table1
  inner join
    table2 on (table1.id = table2.id and table2.data='cat'),
table1 t1
  left outer join
    table3 on (t1.id = table3.id and table3.data = 'dog')

我得到了各种毫无意义的结果。

我想从 table1 中获取所有 id 的列表,其中 table2.data = cat,然后对 table3.data = dog 的表 3 的结果进行外部连接。

我注意到我不能在两个连接子句中为 table1 指定相同的表/别名,所以这让我相信 mysql 正在单独运行连接表达式并将结果组合在一起或类似的东西。

我还尝试摆脱 from 部分中的“内部连接”并将其放在 where 子句中,这也不起作用,尽管它没有以不同的方式工作(得到不同的错误结果)

这在 sybase 或 oracle 中非常容易。

我究竟做错了什么?

4

1 回答 1

14
select table1.id
from
table1
  inner join
    table2 on (table1.id = table2.id and table2.data='cat')
  left outer join
    table3 on (table1.id = table3.id and table3.data = 'dog')

我认为您永远不想在 from 语句中使用逗号。我相信逗号相当于说交叉连接。虽然不确定,但我认为这个查询就是你要找的。

于 2009-01-08T04:46:29.737 回答