mysql - 使用连接来获取几个信息

时间:2013-11-23 00:27:28

标签: mysql join

我有以下表格:

TABLE article 
article_id
title
article_text
user_id

TABLE tag_article
tag_article_id
tag_id
article_id

TABLE tag
tag_id
tag

TABLE user
user_id

我想要的是搜索标题中包含字符串的所有文章或标签上的内容OR。

我目前的查询如下:

SELECT article.article_id,article.title,user.user_id,article.article_text,
FROM tag,user,article
WHERE (article_text LIKE ? OR title LIKE ? OR tag LIKE ?)
AND article.user_id=user.user_id
GROUP BY article.article_id
ORDER BY article_id DESC

1 个答案:

答案 0 :(得分:2)

首先我建议你使用explcit连接,因为它们更容易阅读,更不容易出错(比如你错过了文章和标签之间的连接):

其次,除非你的字符串有%,否则你应该在查询中添加它们:

SELECT a.article_id, a.title, u.user_id, a.article_text,
FROM article a
INNER JOIN user u ON a.user_id = u.user_id
LEFT JOIN tag_article ta ON ta.article_id = a.article_id
LEFT JOIN tag t ON t.tag_id = ta.tag_id 
WHERE a.article_text LIKE '%YOURSTRING%'
  OR a.title LIKE '%YOURSTRING%'
  OR t.tag LIKE '%YOURSTRING%'
GROUP BY a.article_id
ORDER BY a.article_id DESC

我正在使用LEFT JOIN,因为如果你有没有标签的文章,它仍然会在文章列中搜索。