値なしの列のための選択肢を追加するためにいくつかのクエリを編集中に、私が誤って(ここでsimplyfiedバージョンである)このようなものを書いた:SQLの構文:選択(副選択)でサブクエリとして句からなしを選択
SELECT id, (SELECT name) FROM t
私の驚いたことに、MySQLはエラーをスローしませんでしたが、私の期待した結果(name
のカラム値)を与えるクエリを完了しました。 私はそれについてのドキュメントを見つけようとしましたが、成功しませんでした。
このSQL標準ですか、MySQLの専門ですか?
この構文の結果が、本当に同じ(外側の)テーブルの列の値であることを確認できますか?
SELECT id, (SELECT name FROM t AS t1 where t1.id=t2.id) FROM t AS t2
しかしEXPLAIN
レポート、私はとても素敵だと思い旧バージョン、についてExtra
欄のNo tables used
:拡張版はこのようになります。ここで
は(それは私のためにタイムアウト続け、私はあなたがより良い運を持っていることを望みます)シンプルfiddle on SqlFiddleです。
明確化:私はサブクエリについて知っていますが、私はいつも選択するテーブルを暗示したサブクエリを作成しました。したがって、実行プランに追加のステップが生じます。私の質問は、この構文とそれが与える結果、MySQLでは期待値を返さないようです。
私がチェックし、それはおそらくMySQLの専門ではないだけですので、それはまた、SQLiteのとMSSQLで動作します。 –
興味深いことに、サブクエリは列を選択しても書き込むことができます。私はまた、このような2つ以上の列を選択できるかどうかを知りたいと思っていますか? –
@ Kanike Vamshi Krishna彼が持っているのはサブクエリなので、彼は1列だけ返すようにしています。水っぽい;相関サブクエリを参照すると、そこにあなたの経験に関する良い情報がいくつか見つかります。 – KorreyD