如何从更多OR匹配的mysql中进行选择

时间:2011-09-20 05:26:44

标签: php sql

说我们有10列,

col1,col2 ... col10;

如何选择具有最高OR匹配的行where col1 = "some" OR col2= "some" OR col3= "somethingelse" ... OR col10 = "who knows";

row1匹配col1,col2,col3,col4;

row2匹配col1,col4;

想要选择row1

2 个答案:

答案 0 :(得分:0)

您想要的是通配符列的搜索。 (表示col *的所有列。)

这不可能完全不是由MySQL AFAIK完成的。 您可以按照以下方式获取匹配的列,然后使用php构建查询。

SELECT COLUMN_NAME
FROM information_schema.`COLUMNS` C
WHERE table_name = 'yourTable' AND COLUMN_NAME LIKE 'col%'

使用匹配的列在PHP中构建字段列表(也就是将字段内嵌到'col1'='x'或'col2'='x'等。

希望这有帮助, 晒。

答案 1 :(得分:0)

你能做的就是这样:

SELECT col1, col2, col3
FROM tblName 
ORDER BY ( IF(col1="some",1,0)
          +IF(col2="some",1,0)
          +IF(col3="somethingelse",1,0)...
          +IF(coln="who knows",1,0) )
Desc
这样做会使得大多数匹配的行位于列表的顶部,你可以在末尾添加Limit 1语句,只显示匹配最多的行。