如何检查Mysql Union是否存在行?

时间:2012-02-15 19:24:22

标签: php mysql

确定这有点复杂,因为我的表没有被引用或组合或彼此匹配所以我不能使用JOIN。我正在构建一个搜索表单,它只是匹配多个表中的搜索关键字。

我遇到的问题是我必须根据结果来自哪个表生成新闻项链接但我找不到钩子。 MySql联合工作完美,除了我无法检查数据是来自表a还是表b。

here is short version 
SELECT  i.title,i.category FROM table_a  WHERE REGEXP 'news'
UNION 
SELECT i.title,i.category FROM table_b WHERE REGEXP 'news'

现在,我的表A有36行,表B有34行,另外一个区别是表A有行名称extra_field我想检查并根据该切换我的链接。

查询后的php切换可能类似于

foreach($rows as $row) :
if($row->extra_field):
$link = 'index.php?".$row->category.$row->title".html'
else:
$link = 'index.php?".$row->title".html'
endif;
endforeach;

那么有没有办法检查我的UNION sql是否存在该行?我知道如何检查行是否存在但是如何在UNION中执行此操作?

请帮忙。谢谢!

1 个答案:

答案 0 :(得分:1)

以您的简短版本为例,您可以在查询中添加一个额外的列:

SELECT  i.title,i.category,'a' as source FROM table_a  WHERE REGEXP 'news'
UNION 
SELECT i.title,i.category, 'b' as source FROM table_b WHERE REGEXP 'news'

然后在您的代码中,您可以查看“来源”列。