ほとんどの注文クエリは最初の SQL ステートメント クエリに従ってクエリされ、注文クエリの結果はすべて一意ですが、この順序になると 2 つのクエリ結果が発生します。その理由は何ですか?通常の状況では、フィールド属性が文字列の場合、値は引用符の有無にかかわらず同じではありませんか? アドバイスをお願いします
最初のSQL文を使用したクエリの結果
ほとんどの注文クエリは最初の SQL ステートメント クエリに従ってクエリされ、注文クエリの結果はすべて一意ですが、この順序になると 2 つのクエリ結果が発生します。その理由は何ですか?通常の状況では、フィールド属性が文字列の場合、値は引用符の有無にかかわらず同じではありませんか? アドバイスをお願いします
最初のSQL文を使用したクエリの結果
もちろん違います。数値と varchar を比較する場合、mysql はパスワードの型が文字列でクエリ条件が int の場合は一致します。 show warnings;
クエリの結果を投稿してください。私もとても興味があります
varchar の桁数は何桁ですか? 長さが足りず、次の引用符は自動的に無視されますか?
out_trade_no は間違いなくすべて数字ですよね? 暗黙的な型変換中に値の一部がインターセプトされ、文字列データの場合には余分なデータが生成された可能性があります。不要な抜け穴を避けるために、 type を引用符で囲んで追加する必要があります
varchar を数値に変換するときに切り捨てられる必要があります。
引用符を追加しないと、MySQL は最初にテーブル全体をクエリしてスキャンし、次にクエリ結果を 1 つずつ varchar に変換します。
一重引用符タイプのマッチングを追加し、インデックス スキャンを直接使用します (列にインデックスがある場合)。
そのため、引用符を追加しないとパフォーマンスの問題が発生する可能性もあります。