0

私は次のように声明を書きたいと思います:

select attrib1, attrib2, attrib3, ...
from   table
where exists (
     select attrib1, attrib2 as foo, attrib3, ...
     from   table
     where  foo < attrib2
)

そのため、ドット表記を使用することはできません。これは可能ですか?

編集:
私が説明したクエリは、リレーショナル代数の半結合に似ています。attrib2列の名前を に変更し、各列をでfoo選択したいと考えています。tablefoo < attrib2

4

2 に答える 2

2

クエリの省略記号のことですか? もしそうなら、それは標準 SQL の一部ではありません。クエリの正しい形式は次のとおりです。

select t.*
from   table t
where exists (
     select 1
     from   table t2
     where  t2.attrib2 < t.attrib2
)

別の定式化についてはsgeddesの回答が表示されるはずですが。

于 2013-05-30T20:19:56.923 に答える
1

「ドット表記」の参照: テーブルを参照しないという意味ですか? もしそうなら、なぜですか?

この特定のクエリについては、次のようにサブクエリを使用するように書き直すことができると思いますMAX

SELECT attrib1, attrib2
FROM table1 
WHERE attrib2 < (select max(attrib2) from table1)

が達成していることを考慮するEXISTSと、attrib2 が最も高いレコードを除くすべてのレコードが返されます。

于 2013-05-30T20:19:46.617 に答える