Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Vấn đề điều kiện WHERE trong SQL

Tôi nghĩ rằng bạn đang cố truy cập vào validFromvalidTo từ truy vấn trường hợp trong điều kiện where. Nếu đúng như vậy, bạn cần phải định dạng lại truy vấn của mình.

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

Nhưng điều này sẽ trả lại 3 kết quả. Nếu bạn cần nhận được kết quả mong đợi, thì bạn cần sử dụng AND điều kiện thay vì OR .

Sau đó, truy vấn của bạn sẽ là

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. Chuyển đổi chuỗi phân tách thành nhiều giá trị trong mysql

  2. MySQL Amazon RDS:Đã vượt quá thời gian chờ Khóa

  3. Làm thế nào để TỔNG và SUBTRACT bằng cách sử dụng SQL?

  4. cách giải quyết không kết nối được với /192.168.15.186 (cổng 80):kết nối không thành công:ETIMEDOUT (Kết nối đã hết thời gian chờ) trong Tường lửa của Windows

  5. Tắt ký hiệu khoa học MySQL