2016-05-17 3 views
0

私は理解できないSQLクエリの最後を持っています:UNION ALL SELECT TOP 1 NULL,NULLSQLでは、ALL SELECT TOP 1 NULL、NULLは何をしますか?

誰かがそれを段階的に説明できますか?

乾杯

+0

「UNION ALL」(NULLを含む)とMS SQL Serverの「TOP」をチェックしてください。 – jarlh

+0

これは、より大きなクエリの断片に過ぎません。あなたは全体の質問または少なくともそれの代表的なサンプルを投稿できますか? –

答えて

0

あなたは正しくクエリを "解析" しませんでした:ALLUNION ALLのように、ではないSELECTに、UNIONに属します。

クエリの部分SELECT TOP 1 NULL, NULLは、SELECTを超えるUNION ALLの結果に2つのNULL列の行を追加するだけです。あなたが望むなら、それは不要なので、TOP 1をドロップすることができます。例えば

クエリを持っている場合は、

SELECT FirstName, LastName 
FROM User 
UNION ALL 
SELECT NULL, NULL 

、このようなクエリでは、2 NULL秒の単一のタプルが続き、テーブルUserからFirstName, LastNameタプルのリストを生成します。

このトリックは、クエリからデータを受け取るプログラムがいつ読み込みを停止するかを決定するのに便利です。しかし、このハックは、RDBMSがUNION ALLの下部で生成されたNULLのペアを他の名前の前、後、または真中に返すことが許可されているため、ハックの境界になります。

+0

トップはここでは不要です。 – sagi

+0

@サギもちろんです。私の理解は、誰かがこのクエリを書いたことであり、OPはそれを理解しようとしています。質問を書いた人は誰でも「TOP 1」を置くので、そこに置いておくこともできます。 – dasblinkenlight

+0

あなたの質問からデータを受け取ったプログラムは、いつ読み込みを止めるかを決めることができます*保証がないので、この追加されたタプルは結果セットの最後の行になります... – Shnugo

関連する問題