0

目标字段为 pk_2013_1qrt,其类型为整数。但是当我运行下面的查询时,结果也包括 pk_2013_1qrt=1 值。我哪里做错了?问候

SELECT *,ims_2012_modifiye.id AS imsID, ims_2012_modifiye.ilac_id AS ilacID, 
         ims_2012_modifiye.ilac_adi_duzgun AS iaDuzgun 
FROM ims_2012_modifiye 
LEFT JOIN ilaclar ON ims_2012_modifiye.ilac_id=ilaclar.id 
WHERE ims_2012_modifiye.ilac_id NOTNULL 
  AND ims_2012_modifiye.asil_listede_mi=1 
  AND ims_2012_modifiye.ilac_id NOT IN
      (SELECT ilac_id FROM piyasa_kontrol 
       WHERE pk_yil IN (2012,2011,2010,1900,1901)) 
OR
  ims_2012_modifiye.oncelik_verilsin_mi=1 
  AND ims_2012_modifiye.pk_2013_1qrt=0 
LIMIT 5
4

2 回答 2

1

OR的优先级低于AND。您想要的内容尚不清楚,但最新AND ims_2012_modifiye.pk_2013_1qrt=0的仅适用于带有ims_2012_modifiye.oncelik_verilsin_mi=1. 也许是这样:

SELECT *,ims_2012_modifiye.id AS imsID, ims_2012_modifiye.ilac_id AS ilacID, 
         ims_2012_modifiye.ilac_adi_duzgun AS iaDuzgun 
FROM ims_2012_modifiye 
LEFT JOIN ilaclar ON ims_2012_modifiye.ilac_id=ilaclar.id 
WHERE (ims_2012_modifiye.ilac_id NOTNULL 
         AND ims_2012_modifiye.asil_listede_mi=1 
         AND ims_2012_modifiye.ilac_id NOT IN
           (SELECT ilac_id FROM piyasa_kontrol 
            WHERE pk_yil IN (2012,2011,2010,1900,1901)) 
       OR
         ims_2012_modifiye.oncelik_verilsin_mi=1)
  AND ims_2012_modifiye.pk_2013_1qrt=0 
LIMIT 5
于 2013-01-31T09:40:08.160 回答
0

问题解决了。正如@Anton 所说,AND 可以事先访问查询结果。将 AND ims_2012_modifiye.pk_2013_1qrt=0 部分移到 WHERE 之后解决了我的问题。谢谢安东,问候

于 2013-01-31T10:26:12.827 回答