【问题标题】:How to do Mysql Union with check if row exists?如何通过检查行是否存在来执行 Mysql Union?
【发布时间】:2012-02-16 03:27:16
【问题描述】:

好的,这有点复杂,因为我的表没有被引用或组合或相互匹配,所以我不能使用 JOIN。我正在构建一个搜索表单,它可以简单地匹配多个表中的搜索关键字。

我遇到的问题是我必须根据结果来自哪个表来生成新闻项目链接,但我找不到钩子。 MySql union 工作完美,只是我无法检查数据是来自表 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 中进行检查?

请帮忙。谢谢!

【问题讨论】:

    标签: php mysql


    【解决方案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'
    

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

    【讨论】:

      猜你喜欢
      • 2013-01-05
      • 2016-12-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-06-10
      • 1970-01-01
      • 2014-04-10
      相关资源
      最近更新 更多