我在两个表中搜索字符串。
$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%' ";
如何找出我找到的记录来自哪个表?
答案 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)
最简单的方法是对每个表执行两次查询。然后你就会知道结果中找到了哪一个。如果要将它们一起显示并排序,你可以将两个结果集合并在显示它们之前将它们合并在一起。