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 に答える