如何在多表搜索中找出我的结果表?

时间:2010-02-14 10:58:40

标签: mysql search

我在两个表中搜索字符串。

$sql="SELECT download.title FROM download
      WHERE download.title LIKE '%$search%' 
      UNION 
      SELECT news.title FROM news
      WHERE news.title LIKE '%$search%' OR news.text LIKE '%$search%' ";  

如何找出我找到的记录来自哪个表?

4 个答案:

答案 0 :(得分:3)

为什么不在结果集中添加一个鉴别器列?这使您可以查询一次,并按来源获取结果。

SELECT 'DOWNLOAD' AS SOURCE, download.title FROM download WHERE download.title LIKE '%$search%' 
UNION ALL
SELECT 'NEWS', news.title FROM news WHERE news.title LIKE '%$search%' OR news.text LIKE '%$search%';

答案 1 :(得分:1)

在PHP中,您可以使用mysql_field_table函数。

答案 2 :(得分:1)

您可以添加一个额外的列来表示来源,然后您可以使用该列来确定

e.g。

$

sql="SELECT download.title, 'download' as source FROM download WHERE download.title LIKE '%$search%' 
UNION 
SELECT news.title 'news' as source FROM news, WHERE news.title LIKE '%$search%' OR news.text LIKE '%$search%' ";

虽然根据之前的评论,查询两次可能比使用union

更好

答案 3 :(得分:0)

最简单的方法是对每个表执行两次查询。然后你就会知道结果中找到了哪一个。如果要将它们一起显示并排序,你可以将两个结果集合并在显示它们之前将它们合并在一起。