Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Masalah kondisi WHERE dalam SQL

Saya pikir Anda mencoba mengakses validFrom dan validTo dari kueri kasus dalam kondisi di mana. Jika demikian, Anda perlu memformat ulang kueri Anda.

SELECT t1.* FROM ( SELECT mPrice, aPrice, 
CASE 
    WHEN validFrom < '2013-11-01' 
        THEN '2013-11-01' 
    ELSE validFrom END AS validFrom, 

CASE 
    WHEN validTo > '2013-11-30' 
        THEN '2013-11-30' 
    ELSE validTo END AS validTo 

FROM commission) t1 

WHERE ((t1.validfrom BETWEEN '2013-11-01' AND '2013-11-30') OR (t1.validto BETWEEN '2013-11-01' AND '2013-11-30')) ORDER BY t1.validFrom

Tapi ini akan mengembalikan 3 hasil. Jika Anda perlu mendapatkan hasil yang diharapkan, maka Anda perlu menggunakan AND kondisi alih-alih OR .

Maka kueri Anda akan menjadi

SELECT t1.* FROM ( SELECT mPrice, aPrice, 
CASE 
    WHEN validFrom < '2013-11-01' 
        THEN '2013-11-01' 
    ELSE validFrom END AS validFrom, 

CASE 
    WHEN validTo > '2013-11-30' 
        THEN '2013-11-30' 
    ELSE validTo END AS validTo 

FROM commission) t1 

WHERE ((t1.validfrom BETWEEN '2013-11-01' AND '2013-11-30') AND (t1.validto BETWEEN '2013-11-01' AND '2013-11-30')) ORDER BY t1.validFrom


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Permintaan MySQL - dioptimalkan

  2. MySQL, Kesalahan 126:File kunci salah untuk tabel

  3. MYSQL INSERT atau UPDATE JIKA

  4. Entity framework 5.0 kode-pertama dengan MySQL di WPF

  5. MySQL 8 mengabaikan panjang integer