使用查询进行关键字搜索

时间:2013-09-07 04:34:27

标签: mysql sql

这是一个简单的问题,所以我会保持简短:

如果我有以下SQL查询:

SELECT * FROM keywords WHERE * = ?

这可以作为搜索功能吗?假设表格关键字上的每一行都有10或20个"关键字,"这会找到其中包含?的所有行吗?

基本上,星号可以用于SQL查询中的任何值吗?

更新: 我计划的表格是这样的:

 -----------------------------------------------------
|ID |keyword1 |keyword2 |keyword3 |keyword4 |keyword5 |
 -----------------------------------------------------
|5  |blablaa2 |blablaa3 |bla blaa4|bl abla?5| blablaa6|
 -----------------------------------------------------

由于担心"维护和性能"我考虑过这个:

------------
|ID|Keyword|
|5 |blablaa|
|3 |blablaa|
|5 |blablaa|
|2 |blablaa|
|1 |blablaa|
------------

然后我的SQL查询就像:

SELECT * FROM keywords WHERE keyword = ?

在两者上,ID将在另一个表中引用,关键字主要用于搜索该表。

2 个答案:

答案 0 :(得分:1)

不在MySQL中。您可以在SQLFiddle上进行测试:http://sqlfiddle.com/#!2/5d394/1

我从未见过人们使用通配符作为列名。我怀疑是否有任何RDBMS允许它。

您可以做的是创建一个名为关键字的表,列出表中每一行的关键字。您可以在该表上执行内部联接并搜索KEYWORD =?。

答案 1 :(得分:1)

首先,答案是否定的,但如果您将其更改为:

SELECT * FROM keywords WHERE column_name LIKE '%?%'

should work

其次,从你的问题中不清楚如何构建表格。如果是这样的话:

 -----------------------------------------------------
|column1 |column2 |column3 |column4 |column5 |column6 |
 -----------------------------------------------------
|blablaa1|blablaa2|blablaa3|blablaa4|blabla?5|blablaa6|
 -----------------------------------------------------
...

然后我之前写的答案将无效,设计也不好,应该每行替换一个关键字。另一种方法是按如下方式查询表:

SELECT * FROM keywords WHERE column1 LIKE '%?%' OR 
column2 LIKE '%?%' OR 
column3 LIKE '%?%' OR 
...

但是,正如我刚刚提到的,这不是构建表格的好方法,您最好考虑如何重新设计它以获得更好的性能和效果。维护。