好吧,这有点复杂,因为我的表没有被引用、组合或相互匹配,所以我不能使用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'
然后在您的代码中,您可以检查"源"列。