PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Dapatkan kembali hasil yang sama ketika mencoba menemukan data yang berbeda

Masalah Anda adalah kurangnya tanda kurung:Dalam SQL AND diutamakan daripada OR , jadi Anda perlu memberi tanda kurung di sekitar ekspresi Anda sebelumnya:

SELECT * FROM dim_date
WHERE ( -- added bracket
 EXTRACT (MONTH FROM date_cal) BETWEEN 3 AND 5
 OR (EXTRACT (MONTH FROM date_cal) = 2 AND EXTRACT (DAY FROM date_cal) >= 15)
 OR (EXTRACT (MONTH FROM date_cal) = 6 AND EXTRACT (DAY FROM date_cal) <= 21)
 ) -- added bracket
AND EXTRACT (YEAR FROM date_cal) BETWEEN 2010 AND 2012

Tanpa tanda kurung, Anda mendapatkan A or B or (C and D) , tetapi Anda ingin (A or B or C) and D




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Apakah ada jalan pintas untuk menggunakan dblink di Postgres?

  2. Ubah fungsi rekursif menjadi tampilan

  3. Cara mendapatkan waktu lokal OS server di semua versi Postgres

  4. Bagaimana cara memfilter array json per setiap baris yang dikembalikan?

  5. Tampilan PostgreSQL:Merujuk satu bidang terhitung di bidang terhitung lainnya