我在如何构造语句上遇到问题,因此即使该值可能不在其他列中,它也会返回与多个列中的多个值匹配的记录...是的,我知道这听起来令人困惑,让我解释一下
假设我正在寻找2个值(“ this”和“ that”)。还要说,我正在这些值的4个不同的列中查找。这是我提出的2个方案陈述,但都无法正常工作,我将逐一解释。
使用AND运算符
SELECT * FROM table
WHERE (column1 LIKE '%this%'
AND column2 LIKE '%this%'
AND column3 LIKE '%this%'
AND column4 LIKE '%this%'
AND column1 LIKE '%that%'
AND column2 LIKE '%that%'
AND column3 LIKE '%that%'
AND column4 LIKE '%that%')
如果我对语句使用 AND 运算符,则每个值都必须在每一列中,否则该语句将不返回任何记录。因此,假设它在column2
中找到“ this”并在column1
中找到“ that”。即使在这2列中找到了这些值,由于在column3
和column 4
使用OR运算符
SELECT * FROM table
WHERE (column1 LIKE '%this%'
OR column2 LIKE '%this%'
OR column3 LIKE '%this%'
OR column4 LIKE '%this%'
OR column1 LIKE '%that%'
OR column2 LIKE '%that%'
OR column3 LIKE '%that%'
OR column4 LIKE '%that%')
如果我使用 OR 运算符,那么它将返回所有包含任何列中任何值的记录,即使该记录可能只包含这些值之一而不是全部都没有。< / p>
我试图用我的语句完成的操作是仅返回在任何列中同时包含“ this”和“ that”的记录,即使其他列可能不包含这些值。
希望这很有道理。
答案 0 :(得分:2)
使用AND
和OR
的组合。
SELECT * FROM table
WHERE (column1 LIKE '%this%'
OR column2 LIKE '%this%'
OR column3 LIKE '%this%'
OR column4 LIKE '%this%')
AND (column1 LIKE '%that%'
OR column2 LIKE '%that%'
OR column3 LIKE '%that%'
OR column4 LIKE '%that%')