sql >> Databáze >  >> RDS >> PostgreSQL

Získejte zpět stejný výsledek při pokusu o nalezení jiných dat

Váš problém je nedostatek závorek:V SQL AND má přednost před OR , takže musíte kolem celého předchozího výrazu umístit závorky:

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

Bez závorek získáte A or B or (C and D) , ale chcete (A or B or C) and D




  1. Celočíselné pole MySQL je v PHP vráceno jako řetězec

  2. SQL Nelze vložit explicitní hodnotu pro sloupec identity do tabulky 'Tabulka', když je IDENTITY_INSERT nastaveno na OFF

  3. Jak odinstalovat / úplně odebrat Oracle 11g (klient)?

  4. Jak vložit výsledky uložené procedury do dočasné tabulky na serveru SQL Server