次のような直接値ではなく、列名で BETWEEN を使用しようとしています。
SELECT * FROM table WHERE column1 BETWEEN column2 AND column3;
これは17行のようなものを返していますが、私が書くと:
SELECT * FROM table WHERE (column1 <= column2 AND column1 >= column3) OR (column1 >= column2 AND column1 <= column3)
私は約600行を取得します。どちらの場合も、column1の値が実際には中間値である行のみを取得しますが、2番目の方法ではより多くの結果が得られるため、1番目の方法には問題があります。
問題は、純粋な値の代わりに列名で BETWEEN 句を使用することにあると思われます.SQLが列名を実際の値に変換しています..奇妙ですが、誰か教えてください。ありがとう