今天我发现这个select语句在oracle中是有效的。
select * from table where col=(value)
相当于这个
select * from table where col=value
有人可以解释一下吗?
SELECT * FROM DUAL;
/* Result:
"DUMMY"
"X"
*/
SELECT COUNT(dummy) FROM DUAL WHERE dummy = 'X';
-- 1
SELECT COUNT(dummy) FROM DUAL WHERE dummy = ('X');
-- 1
SELECT COUNT(dummy) FROM DUAL WHERE dummy = (((('X'))));
-- 1
SELECT COUNT(dummy)
FROM DUAL
WHERE dummy = 'X'
OR dummy = ('X')
OR ( dummy = 'X' OR dummy = ('X'))
OR ((dummy = 'X' OR dummy = ('X')) AND (1 = 1 OR (1 = 1 OR (1 = 1))));
-- 1
(...) 圆括号或方括号用于通过对应首先评估的表达式部分进行分组来明确表示优先级。因此,为了在乘法之前强制加法,我们写成 (2 + 3) × 4 = 20,为了在求幂之前强制加法,我们写成 (3 + 5)2 = 64。
不知道你在寻找什么解释。如果您的意思是为什么 col=value 和 col=(value) 相同,那么这不仅在 oracle 中而且在大多数其他 dbs sql 查询中都是完全有效的。当您需要类似情况时,请考虑以下情况。
Select * from table1
where col = (Select max(col2) from table2)