SQLite有时会忽略列的值

时间:2019-03-16 19:08:32

标签: sql sqlite

在某些情况下,sqlite忽​​略了and运算符之前的条件,而仅使用or运算符,这会导致太多的答案不适合,因为它们不在该imenik表中。

SELECT k.ime, k.priimek, k.naslov, k.tel_st, k.gmail, kr.ime FROM kontakti k 
    INNER JOIN kraji kr ON kr.id = k.kraj_id 
    INNER JOIN imeniki i ON i.id = k.imenik_id 
WHERE (i.ime = 'as') 
   AND (k.ime LIKE '%a%') 
   OR (k.priimek LIKE '%a%') 
   OR (k.naslov LIKE '%a%') 
   OR (k.tel_st LIKE '%a%') 
   OR (k.gmail LIKE '%a%') 
   OR (kr.ime LIKE '%a%');

1 个答案:

答案 0 :(得分:0)

我认为您应该添加一些附加括号(将所有条件放在AND操作数之后的两个括号内)

SELECT k.ime, k.priimek, k.naslov, k.tel_st, k.gmail, kr.ime FROM kontakti k 
    INNER JOIN kraji kr ON kr.id = k.kraj_id 
    INNER JOIN imeniki i ON i.id = k.imenik_id 
WHERE (i.ime = 'as') 
    AND ((k.ime LIKE '%a%') 
    OR (k.priimek LIKE '%a%') 
    OR (k.naslov LIKE '%a%') 
    OR (k.tel_st LIKE '%a%') 
    OR (k.gmail LIKE '%a%') 
    OR (kr.ime LIKE '%a%'));