sql >> Database >  >> RDS >> PostgreSQL

Krijg hetzelfde resultaat wanneer u verschillende gegevens probeert te vinden

Uw probleem is een gebrek aan haakjes:In SQL AND heeft voorrang op OR , dus je moet haakjes om je hele vorige uitdrukking zetten:

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

Zonder de haakjes krijg je A or B or (C and D) , maar je wilt (A or B or C) and D




  1. PHP bulk invoegen foreach

  2. Waarom geeft de opdracht 'explain' verschillende resultaten op dezelfde SQL-instructie?

  3. Hoe te bepalen wat gebruikers SQL Server Symmetric Key Encryption kunnen decoderen

  4. Kan ik een trigger starten op de select-instructie in mysql?