2011-09-20 36 views
0

说,我们有10列,如何从MySQL更多的选择或匹配

col1,col2 ... col10; 

如何选择一行where col1 = "some" OR col2= "some" OR col3= "somethingelse" ... OR col10 = "who knows";,与最高或匹配?

row1匹配col1,col2,col3,col4;

row2匹配col1,col4;

想选择row1

+0

“最高OR匹配”是什么意思? – xdazz

+0

'OR'不是唯一的。你在想'XOR',op? – Amber

回答

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

谢谢,我会尝试 – somekindofdude

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 

做这种方式将使大部分的比赛排在列表的顶部,您可以在t加限制1个语句他结束只显示最匹配的行。

+0

我也在想这种方式,想找到其他方式,谢谢,我想我会这样做 – somekindofdude