用于搜索的sql语句语法

时间:2016-01-20 01:37:09

标签: php mysql where-clause

我想为搜索编写一个sql语句。这是示例数据库结构。 enter image description here

例如,我想显示主题为p的所有记录。如何从上面的结构中编写用于搜索13的sql查询?有什么建议吗?

我可以使用'13'吗?这有什么不对吗?

3 个答案:

答案 0 :(得分:0)

试试这个:

SELECT * FROM `TABLE_NAME` WHERE `Topic` LIKE "%13%";

答案 1 :(得分:0)

将它保存在多对多关系的第三个表中会更好更快。

如果您想按照示例(单个表格)进行保存,请尝试将数据保存为例如",10,13,15,"

之前和之后总是有昏迷,因此下面的sql将排除213和132等

select * from  table_name where Topic like '%,13,%'

答案 2 :(得分:-1)

select * from table where find_in_set("13",topic);

或者如果主题未用作集合,您可以执行...

select * from table where concat(",",topic) like "%,13,%";

第二个并不是真正的优雅,但我必须这样做几次。

因为数据没有真正规范化,所以我使用concat在主题字段中添加一个逗号,这样我就可以确保“like”比较在值之前和之后用逗号传递。我想我们也必须删除任何不需要的空格,因此最终它最终会像:

select * from TABLE where concat(",",replace(topic," ","")) like "%,13,%";

最终,我们必须知道在主题列中会发生什么,才能提出始终有效的查询。在过去,我有过这样的情况,我会在每个值之前和之后使用分隔符向字符串字段(即主题)添加值,如:

(1)(2)(3)(14)(15)(255)(283)

如果您为主题字段执行了类似的操作,则查询很简单......

select * from table where topic like "%(13)%";