2011-09-20 42 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