php - mysql从3行中选择关键字

标签 php mysql

我这里有这个问题.. 我在表中有 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/

相关文章:

php - Smarty,总值不可能

php - 如何将自定义类与 silex ServiceProvider 一起使用

php - 如何从地址栏中隐藏 .php

mysql - 对存储为 9 :15 AM, 9:30 AM 的 mysql 表值应用排序

mysql 在连接尝试时自动启动

php - PHP-MYSQL SELECT 查询时间长

Php on zend,如何为查询转义变量?

mysql - 选择等于多个数字的结果

php - MySQL 删除行如果

php - Symfony2 - 没有 session cookie 的有状态 API key 身份验证