我在 MySQL 中选择行时遇到问题。我不想选择某些行,但正在选择它们。
我的查询:
SELECT name,url
FROM additions
WHERE enabled = 1
AND picture = 1
AND name LIKE '%value%'
OR tags LIKE '%value%'
OR subtext LIKE '%value%';
Run Code Online (Sandbox Code Playgroud)
我不希望选择没有图片 ( picture = 0
) 的行以及未启用 ( enabled = 0
) 的行。我认为行匹配是因为名称、标签和/或潜台词匹配value
, 因为OR
WHERE 子句中的条件。
我只想选择具有图片并启用的行,而不管名称、标签、潜台词是否匹配。我怎样才能做到这一点?
答案:正如 ypercube 所说,解决方案是:
adding parentheses around the OR conditions
像这样:
SELECT name,url FROM additions WHERE enabled = 1 AND picture = 1 AND (name LIKE '%value%' OR tags LIKE '%value%' OR subtext LIKE '%value%');
Run Code Online (Sandbox Code Playgroud)
使用括号, AND 将优先并且LIKE
值比较中的整个部分必须与其他评估一起为真,例如enabled = 1
and picture = 1
。如果没有括号,OR 语句将被单独评估(如果其中一个恰好为真,则将选择一行)。
归档时间: |
|
查看次数: |
126 次 |
最近记录: |