说我们有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
,
答案 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语句,只显示匹配最多的行。