サブクエリに存在しない列でクエリが失敗しないのはなぜですか?

アーネストサディコフ

クエリのスペルを間違え、MySQLの奇妙な動作に直面しました。

create table aaa (id bigint auto_increment primary key, 
                  amount int not null, 
                  other_column varchar(20)) engine=InnoDB
create table bbb (aaa_id bigint not null, 
                  comment varchar(200), 
                  key(aaa_id)) engine=InnoDB; 
insert into aaa(other_column, amount) values ('hello, world', 12), 
                                             ('second string', 15), 
                                             ('one more', 100);
insert into bbb value (2, 'no 2s!');

次のクエリはnull結果を生成します(「aaa_id」ではなく「id」と入力しました)。

select sum(amount) from aaa where id not in (select id from bbb);

「たぶん 『id』はMySQLにとって特別な意味を持っている」と私は思いました。ただし、次のクエリは正常に実行され、127(サブクエリが空の結果を返すかのように)返されます。

select sum(amount) from aaa where id not in (select other_column from bbb);

次のクエリは期待される結果を生成します。最初のクエリはで失敗しUnknown column 'id2' in 'field list'、2番目のクエリは次を返します112

select sum(amount) from aaa where id not in (select id2 from bbb);
select sum(amount) from aaa where id not in (select aaa_id from bbb);

ご覧のとおり、列が外部クエリに存在する場合、MySQLは何らかの形でサブクエリを実行します。しかし、サブクエリのこれらの列の意味は何ですか?

5.1.70および5.5でテスト済み。

ゴードン・リノフ

このクエリ:

select sum(amount)
from aaa
where id not in (select id from bbb);

次のように解釈されます:

select sum(aaa.amount)
from aaa
where aaa.id not in (select aaa.id from bbb);

bbb.id存在しないのでSQLを作成するときは、常にテーブルエイリアスを使用することをお勧めします。あなたが書いていると思ったクエリ:

select sum(aaa.amount)
from aaa
where aaa.id not in (select bbb.id from bbb);

予期したエラーが発生します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

POSTリクエストに属性が存在しないのはなぜですか?

分類Dev

RetrofitGraphQLクエリが予期しない文字「M」が期待される「}」で失敗するのはなぜですか?

分類Dev

`NOT IN` cteが機能しないのに、` NOT IN`サブクエリが機能するのはなぜですか?

分類Dev

DynamoDBクエリに**等しくない**比較がないのはなぜですか?

分類Dev

エンティティの比較がサブクエリで機能しないのはなぜですか

分類Dev

SELECTクエリでは括弧が機能するのに、サブクエリでは機能しないのはなぜですか?

分類Dev

サイトマッチングクエリが存在しないのはなぜですか?

分類Dev

ismap属性がクエリ文字列を尊重しないのはなぜですか?

分類Dev

JSON配列クエリが機能しないのはなぜですか?

分類Dev

UNIONがCTEまたはサブクエリ内で機能しないのはなぜですか?

分類Dev

AJAX POST リクエストが失敗したのはなぜですか?

分類Dev

2D配列openaccアプリケーションでgcc-10がエラー「エラー:配列セクションが「map」句で連続していない」でリンクに失敗するのはなぜですか?

分類Dev

サブクエリのxmlパスで照合が機能しないのはなぜですか?

分類Dev

カウント関数がこのサブクエリで機能しないのはなぜですか?

分類Dev

クエリが配列内のオブジェクトを更新しないのはなぜですか?

分類Dev

SQLクエリが失敗するのはなぜですか?

分類Dev

FAMILYクエリが失敗するのはなぜですか?

分類Dev

更新クエリがunionサブクエリを列値式として受け入れないのはなぜですか?

分類Dev

CROSS APPLYがこのクエリで無効な列エラーを取得しないのはなぜですか?

分類Dev

クエリが機能しないFireStoreはなぜですか?

分類Dev

evalが正しいエイリアスの作成に失敗するのはなぜですか?

分類Dev

このクエリがPHPMyAdminで機能しないのはなぜですか

分類Dev

RAND()がSQLサブクエリで混乱しているのはなぜですか?

分類Dev

Vapor クエリが常に失敗するのはなぜですか?

分類Dev

PrestoクエリでORDERBYが機能しないのはなぜですか?

分類Dev

room.slugでクエリが機能しないのはなぜですか

分類Dev

Solrクエリが空白で機能しないのはなぜですか?

分類Dev

Cassandra DB:なぜクエリ未満が失敗したのですか?

分類Dev

Cassandra DB:なぜクエリ未満が失敗したのですか?

Related 関連記事

  1. 1

    POSTリクエストに属性が存在しないのはなぜですか?

  2. 2

    RetrofitGraphQLクエリが予期しない文字「M」が期待される「}」で失敗するのはなぜですか?

  3. 3

    `NOT IN` cteが機能しないのに、` NOT IN`サブクエリが機能するのはなぜですか?

  4. 4

    DynamoDBクエリに**等しくない**比較がないのはなぜですか?

  5. 5

    エンティティの比較がサブクエリで機能しないのはなぜですか

  6. 6

    SELECTクエリでは括弧が機能するのに、サブクエリでは機能しないのはなぜですか?

  7. 7

    サイトマッチングクエリが存在しないのはなぜですか?

  8. 8

    ismap属性がクエリ文字列を尊重しないのはなぜですか?

  9. 9

    JSON配列クエリが機能しないのはなぜですか?

  10. 10

    UNIONがCTEまたはサブクエリ内で機能しないのはなぜですか?

  11. 11

    AJAX POST リクエストが失敗したのはなぜですか?

  12. 12

    2D配列openaccアプリケーションでgcc-10がエラー「エラー:配列セクションが「map」句で連続していない」でリンクに失敗するのはなぜですか?

  13. 13

    サブクエリのxmlパスで照合が機能しないのはなぜですか?

  14. 14

    カウント関数がこのサブクエリで機能しないのはなぜですか?

  15. 15

    クエリが配列内のオブジェクトを更新しないのはなぜですか?

  16. 16

    SQLクエリが失敗するのはなぜですか?

  17. 17

    FAMILYクエリが失敗するのはなぜですか?

  18. 18

    更新クエリがunionサブクエリを列値式として受け入れないのはなぜですか?

  19. 19

    CROSS APPLYがこのクエリで無効な列エラーを取得しないのはなぜですか?

  20. 20

    クエリが機能しないFireStoreはなぜですか?

  21. 21

    evalが正しいエイリアスの作成に失敗するのはなぜですか?

  22. 22

    このクエリがPHPMyAdminで機能しないのはなぜですか

  23. 23

    RAND()がSQLサブクエリで混乱しているのはなぜですか?

  24. 24

    Vapor クエリが常に失敗するのはなぜですか?

  25. 25

    PrestoクエリでORDERBYが機能しないのはなぜですか?

  26. 26

    room.slugでクエリが機能しないのはなぜですか

  27. 27

    Solrクエリが空白で機能しないのはなぜですか?

  28. 28

    Cassandra DB:なぜクエリ未満が失敗したのですか?

  29. 29

    Cassandra DB:なぜクエリ未満が失敗したのですか?

ホットタグ

アーカイブ