我想以下列方式撰写声明:
select attrib1, attrib2, attrib3, ...
from table
where exists (
select attrib1, attrib2 as foo, attrib3, ...
from table
where foo < attrib2
)
所以,我不允许使用点符号。这甚至可能吗?
编辑:
我描述的查询类似于关系代数中的半连接。我想将列attrib2
重命名为foo
,然后选择table
中foo < attrib2
的每一列。
答案 0 :(得分:2)
你的意思是查询中的省略号吗?如果是这样,那不是标准SQL的一部分。您的查询的正确形式将是:
select t.*
from table t
where exists (
select 1
from table t2
where t2.attrib2 < t.attrib2
)
虽然你应该看到sgeddes的替代配方的答案。
答案 1 :(得分:1)
参考&#34;点符号&#34;:你的意思是不参考表格吗?如果是这样,为什么?
对于这个特定的查询,我相信可以重写它只是使用带有MAX
的子查询:
SELECT attrib1, attrib2
FROM table1
WHERE attrib2 < (select max(attrib2) from table1)
考虑到EXISTS
正在完成的事情,它会返回所有记录,除了那些具有最高attrib2的记录。