クエリ:MY_TABLE 戻るORA-00904無効な識別子FROM
SELECT COLUMN_NAME MY_TABLEにはCOLUMN_NAME列が存在しないため、これまでとても良い。
クエリ:
SELECT COLUMN_NAME INは(MY_TABLE FROM COLUMN_NAMEを選択)OTHER_TABLE * FROM
だけでなく、それは失敗しない、それは完全なOTHER_TABLEを返します。内部クエリが「外部」テーブルにある列を選択した場合にのみ発生します。
同じクエリを実行しても、内側のクエリの選択列をテーブルに存在しないテーブルにも存在するほかの列に変更すると、
SELECT * FROM OTHER_TABLE WHERE COLUMN_NAME IN(SELECT DIFFERENT_NAME FROM MY_TABLE) *** OTHER_TABLEにDIFFERENT_NAME列は存在しません ORA-00904は無効です。
1.外部クエリに存在するが内部クエリに存在しない列を使用するクエリはどのように失敗しないのですか?
2.完全な表をどのように返しますか?SELECT * FROMテーブルからここ列の(サブクエリ)ここで、サブクエリリターンORA-00904
0
A
答えて
0
in
句のクエリで、「外部」テーブルの列を使用できます。外部表の各行について、その行の値が内部表から選択されます(リテラル値を選択した場合と同様)。外側のクエリの行の値は同じなので、明らかに等しいので、条件が満たされ、行が返されます。そのような間違いを避けるために
良い守備の練習は完全にあなたが(好ましくは表の別名を使用して)照会している列を修飾するので、クエリではなく、あなたが期待していない何かを返すのうち、エラーになります。
SELECT *
FROM other_table ot
WHERE ot.column_name IN (SELECT mt.column_name -- causes error!
FROM my_table mt)
0
我々は二つのテーブルがあることを想像:フィールドB
とフィールドA
とTA
とTB
を、今のは、いくつかのクエリを書いてみましょう:
select A -- wrong: TB doesn't have A field
from TB
しかし、この1はOKこととB
フィールドがnullでなく、TA
が空でないことを提供する全体TB
テーブルを返します。あなたが
where B in (select B from TA)
が等しくなる必要があり、この場合には
select *
from TB
where B in (select B -- <- B is from TB in both cases
from TA)
-- 1. null in (...) is null, not true
-- 2. we have not empty TA
where (B is not null) and Exists (select 1 from TA)
そして最後に
select *
from TB
where B in (select C -- wrong: there's no field C in TB as well as in TA
from TA)
関連する問題
- 1. ここでサブクエリ
- 2. ORA-01799:列はここでサブクエリ
- 3. insert into database.table1 select * from table2ここでid = some_value;
- 4. select文ここ
- 5. ここでselect要素
- 6. MySQL、PHP:select * from tableここで、idは配列
- 7. ここでテーブル
- 8. SELECT * FROM dblist日付はどこですか?
- 9. jQueryのここでのテーブル
- 10. これらのテーブル
- 11. 何もここでテーブル
- 12. 複数の行は、このサブクエリこと、PLSQLのORA 01427
- 13. このSELECT文の "from"という単語のどこにエラーがありますか?
- 14. MySQL SELECT xはどこからではない(SELECT x FROM b) - 予期しない結果
- 15. のMongoDB:「どこで」-Select
- 16. ここでは、has_manyから
- 17. SQL select列がどこから始まるか
- 18. 複数テーブル内/左/右ジョイン(または相関サブクエリ)をcountで実行していますか?ここ
- 19. テーブルの装飾はここ
- 20. どこで(サブクエリ)を選択します
- 21. ここでは、テーブルの単純な表情だ。このデータ
- 22. だからここにPHP
- 23. あるテーブルから値を選択します。ここでanother = valueですか?
- 24. 私はここで、データベースビューから列を削除するビュー列
- 25. SELECT * INTO [newdatabase]。[テーブル] FROM [otherdatabase]。[テーブル]
- 26. だからここ#
- 27. ここからスタートビットマップ
- 28. select文のサブクエリは導出テーブルを見つけることができませんか?
- 29. SQLクエリ - 別のテーブルここで
- 30. MySQLはselect *から結果を返しません。ここで、varchar = ""クエリ