为什么 oracle 不识别这句话?它说在预期的地方找不到“来自关键字”。它出什么问题了 ?
例子:
select distinct a.id = b.id
from table1 a, table2 b
where a.column = X and b.column =Y;
MySQL 允许我这样做。那么我应该改变什么?
您的问题是 a.id = b.id 在 select 子句中时不是有效的 sql。
在下面编辑
鉴于您对预期布尔结果的评论,也许您正在寻找一个案例构造。
select case when a.id = b.id then 1 else 0 end BooleanResult
from tablea a join tableb b on something
where etc
首先,Oracle 在 SQL 中没有布尔数据类型(PL/SQL 中有布尔数据类型),因此查询不能返回布尔值。
你可以做类似的事情
select distinct (case when a.id = b.id
then 1
else 0
end)
from table1 a,
table2 b
where a.column = X
and b.column = Y;
然而,让我感到非常不可能的是,你真的想在两者之间做一个笛卡尔积,table1
然后table2
才应用一个DISTINCT
运算符。通常,DISTINCT
当人们真正想要添加另一个连接条件时,他们会错误地将 a 添加到查询中。我希望你真的想要
select distinct (case when a.id = b.id
then 1
else 0
end)
from table1 a,
table2 b
where a.some_key = b.some_key
and a.column = X
and b.column = Y;
正确定义连接后,您可能不再需要额外的DISTINCT
.
就这个
select distinct a.id, b.id
from table1 a, table2 b
where a.column = X and b.column =Y;
您也可以在 oracle 中使用 decode
select distinct (decode (a.id,b.id,1,0)) from table1 a, table2 b
where a.some_key = b.some_key
and a.column = X ;