使用mysql中具有单个关键字的单个where条件搜索表的所有列

R J*_* J. 23 mysql sql search

我有一个由64个不同领域组成的表.我将在其中搜索一个关键字,结果应与任何字段中的关键字匹配.提出一些建议.

But*_*kus 11

SELECT * FROM `some_table`
WHERE
CONCAT_WS('|',`column1`,`column2`,`column3`,`column4`,`column64`) # single condition, many columns
LIKE '%VT%'
Run Code Online (Sandbox Code Playgroud)

瞧.

'|' 顺便说一句,分隔符是为了防止你找到巧合匹配,例如,column1以'V'结尾而column2以'T'开头,这会在搜索"VT"时给出误报.

我不确定上面的方法是否比方法更快OR(我猜他们的速度是相同的),但如果你手工编写查询,肯定会涉及更少的输入.


Nul*_*teя 5

你可以使用带有多个条件的地方 OR

喜欢

where
name = 'expected'
OR rate ='expected' 
OR country ='expected'
Run Code Online (Sandbox Code Playgroud)


tdl*_*dlm 2

我看不出有什么办法可以解决您的查询简单但又长的问题:

SET @term = "Somesearch";
SELECT id, title FROM sometable WHERE
    col1 LIKE '%@term%' OR
    col2 LIKE '%@term%' OR
    col3 LIKE '%@term%' ...;
Run Code Online (Sandbox Code Playgroud)

您可以只使用特定于语言的变量,而不是使用 MySQL 变量,但为了示例,我想我会坚持使用 MySQL 本身。

“...”是放置其他 61 列/字段的位置。