如何通过检查行是否存在来进行Mysql联合


How to do Mysql Union with check if row exists?

好吧,这有点复杂,因为我的表没有被引用、组合或相互匹配,所以我不能使用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中做到这一点?

请帮忙。非常感谢。

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

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'

然后在您的代码中,您可以检查"源"列。