デカルトをデカルトしようとしましたが、デカルト積を返すように見えました。 MySQLのこれは有効なSQL条件式か、MySQLのバグ(機能)ですか?
select *
from table
where columnname
で
は私がwhere columname is not null
を入力したかのように振る舞うように思われます。結合では、入力はon table.columnname
ですが、行のLOTSが返されます。 on table1.column=table2.column
に修正すればMySQLは正しいことを行いますが、私の最初のバージョンは間違っていて、違法です。
おそらく、 'columnname'の値をブール値にキャストし、真と評価される行を返します。 –
@MartinSmith:MySQLには真のブール型のデータ型がありません。それは単にゼロでないすべての数を真として扱います。そのため、 'foo from delete 42 'は、テーブル内のすべての行を無効な構文について不満なく幸せに削除します。 –
@a_horse_with_no_name - 文字列はどうですか?彼らは常に「1」を除いて「偽」として扱われますか? MySQLは数に変換しようとします::http://sqlfiddle.com/# [このSQLフィドル](http://sqlfiddle.com/#!2/c252c/2) –