使用like和%与MySQL中的列名称

时间:2013-11-09 12:36:50

标签: php mysql sql

我有3个表:Quote,hashtag和user。

如下:

表格引用

Quote                 | user    |  Hashtags
hello world #greet    |  1      |  ,1,3
this is a #quote#this |  2      |  ,2,4

表格标签

id   | hashtag
1    | greet
2    | quote
3    | hello
4    | this

表用户

id | username
1  | john
2  | michael

我想要做的是使用INNER JOIN编写一个SQL查询,使用给定的标签来获取引号(使用每个引号的用户名)。

例如:我有标签:“#greet”,我想在这个标签下得到引号..我必须做这样的事情:

SELECT
     quo.quote,
     usr.username,
     hash.hashtag
FROM
     quote as quo
INNER JOIN
     user as usr
INNER JOIN
     hashtag as hash
ON
     usr.id=quo.user
AND
     hash.id LIKE '%,quo.hashtags,%'
AND 
     hash.id = :givenHashtag

正如您在SQL示例中所看到的,我想检查hashtag id是否包含在quote hashtags varchar中。使用LIKE '%,x,%'

问题是,在这里,我不知道如何将%..%与quo.hashtag列的名称一起使用。

请注意,我的工作基于MySQL / PHP

1 个答案:

答案 0 :(得分:4)

永远不要永远不要在一列中存储多个值。

就像你现在看到的那样,这只会让你感到头痛。规范化您的数据库。创建一个与主题标签和引号相关的新表。

quote_tags
-----------
quote_id
hashtag_id

然后,您可以从引用表

中删除hashtags列