如何在UNION查询的两个表中使用where条件?

时间:2019-08-11 18:57:29

标签: mysql union

我有两个表table1table2。在两个表中,列几乎相同。我正在做的是我必须同时显示两个表中的记录。

就像我在列表页面上一样,我必须显示记录。另外,我必须使用where条件。

我在下面的查询中尝试过

$query1='select *,(CASE WHEN is_status =0 THEN "No" ELSE "Yes" END) as status from tbl_lead as l1 UNION select *,(CASE WHEN is_status =0 THEN "No" ELSE "Yes" END) as status from tbl_leadUpload as l2';

现在,我必须对表1 where leadstatus IN(1,2,3)和表2 where leadstatus IN(1,2,3,4,7)使用where条件,以在同一列表上显示记录。

如何为两个表使用where条件?

您能帮我解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

您有不同的条件,因此必须两次使用WHERE

select *,(CASE WHEN is_status =0 THEN "No" ELSE "Yes" END) as status 
from tbl_lead as l1 
where leadstatus IN(1,2,3)
UNION 
select *,(CASE WHEN is_status =0 THEN "No" ELSE "Yes" END) as status 
from tbl_leadUpload as l2
where leadstatus IN(1,2,3,4,7)

答案 1 :(得分:0)

假设您的tbl_lead和tbl_leadupload具有相同的列(数字和相应的数据类型) 您应该将每个位置添加到适当的表中

    $query1='select *
      , CASE WHEN is_status =0 THEN "No" ELSE "Yes" END as status 
    from tbl_lead 
    WHERE leadstatus IN (1,2,3)
    UNION 
    select *
      ,CASE WHEN is_status =0 THEN "No" ELSE "Yes" END
    from tbl_leadUpload
    where leadstatus IN (1,2,3,4,7) ;';'

如果不是,则应使用显式列,例如:

    $query1='select col1, col2, col3
      , (CASE WHEN is_status =0 THEN "No" ELSE "Yes" END) as status 
    from tbl_lead 
    WHERE leadstatus IN (1,2,3)
    UNION 
    select col1, col2, null
      ,(CASE WHEN is_status =0 THEN "No" ELSE "Yes" END)
    from tbl_leadUpload
    where leadstatus IN (1,2,3,4,7) ;';'