Mysql 使用查询进行关键字搜索

Mysql 使用查询进行关键字搜索,mysql,sql,Mysql,Sql,这是一个简单的问题,所以我会尽量简短: 如果我有以下SQL查询: SELECT * FROM keywords WHERE * = ? 这是否可以用作搜索功能?假设表关键字中的每一行都有10或20个“关键字”,这会找到其中包含?的所有行吗 本质上,星号可以用于SQL查询中的任何值吗 更新: 我计划的桌子是这样的: ----------------------------------------------------- |ID |keyword1 |keyword2 |keyword3 |k

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

如果我有以下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
将在另一个表中引用,关键字主要用于搜索该表。

不在MySQL中。您可以在SQLFIDLE:上测试它

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


您可以创建一个名为keywords的表,列出表中每一行的关键字。您可以对该表进行内部联接并搜索关键字=?。

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

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

第二,你的问题不清楚这个表是如何构造的。如果是这样的话:

 -----------------------------------------------------
|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 
...

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

您使用的是什么rdbms?不。您不能对列或表名使用通配符。他不一定有一个名为关键字的列。我认为他试图在每一列中搜索字符串。@ktm5124我同意,这就是我添加第二段的原因。我对SQLFIDLE不太熟悉,以前从未见过,酷。为什么这是一种构造表的糟糕方法?我计划的表是这样的:(无法在此显示,请检查问题更新。)另一个表上引用了“5”。正如我所写的,由于a)维护:例如,您需要构建另一个关键字表,您将再次完全按照此方式构建,现在使用这两个表将需要一个丑陋的连接。试着把它扩展到4-5张桌子,你会得到一个维护噩梦。和b)性能-阅读
表索引
,了解为什么以这种方式构建它会干扰数据库优化