我这里有这个问题.. 我在表中有 3+id 行,其中 3 行用于关键字:
kw1, kw2, kw3
然后我有值(value)观
$kw1, $kw2, $kw3
所以表格看起来像
id | kw1 | kw2 | kw3 |
----------------------
1 | $kw1| $kw2| $kw3|
....
通过这个查询,只有当所有 3 个都匹配时我才能选择
SELECT id FROM table WHERE kw1='".$kw1."' OR kw2 = '".$kw2."' OR kw3 = '".$kw3."'
我也试着把它弄成这样:
SELECT id FROM table WHERE
(kw1='".$kw1."' OR kw2 = '".$kw2."' OR kw3 = '".$kw3."') OR
(kw1='".$kw3."' OR kw2 = '".$kw2."' OR kw3 = '".$kw1."') OR
(kw1='".$kw2."' OR kw3 = '".$kw2."' OR kw3 = '".$kw1."') OR
... ETC
但我想问你是否有其他方法 - “更聪明”的方法?
谢谢!
最佳答案
您可以使用 in
来简化语法:
SELECT id
FROM table
WHERE kw1 in ($kw1, $kw2, $kw3) or
kw2 in ($kw1, $kw2, $kw3) or
kw3 in ($kw1, $kw2, $kw3)
顺便说一句,您可以在 in
列表中包含列以及常量:
SELECT id
FROM table
WHERE $kw1 in (kw1, kw2, kw3) or
$kw2 in (kw1, kw2, kw3) or
$kw3 in (kw1, kw2, kw3)
如果你想要三者都匹配,那么把or
改成and
。 (您的代码和您的描述似乎在您是希望任何匹配还是所有匹配方面有所不同。)
关于php - mysql从3行中选择关键字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16733587/