mysql 2查询到一个

时间:2012-07-21 18:58:40

标签: mysql merge

我有两个mysql查询,第一个是

SELECT  `first_name` ,  `last_name` ,  `email` ,  `mobile`
FROM  `member_master` 
WHERE  `id` = $member_id  AND  `dob` =  $date

,第二个是

SELECT  `email` 
FROM  `member_master`
WHERE  `id` = $member_id  AND  `dob` !=  $date

需要在一个查询中合并这两个查询,这怎么可能?

2 个答案:

答案 0 :(得分:1)

如果你真的想要一个带有一个标注的两个单独的结果,我想你可以发出一个带标志的UNION(result_id)和第二个结果没有列的空值:

select * from
(
SELECT 1 as result_id
 , first_name 
 , last_name
 , email
 , mobile
FROM member_master
WHERE id = $member_id AND dob = $date

union 

SELECT 2 as result_id
 , null
 , null
 , email
 , null
FROM member_master
WHERE id = $member_id AND dob != $date
) my_result
order by result_id

通过这种方式,您可以识别出合适的集合。​​

编辑:添加了外部选择,以便我们可以通过“flag”列进行排序,这样我们就可以一次处理一组。但是你必须在一个结果中有两个集合,必须进行解析。

答案 1 :(得分:0)

同样的表你可以使用这样的OR语句(唯一的问题是所有记录都包含first_namelast_name等):

 SELECT  `first_name` ,  `last_name` ,  `email` ,  `mobile`
                   FROM  `member_master` WHERE  (`id` = $member_id  AND  `dob` =  $date ) or ( `id` = $member_id  AND  `dob` !=  $date)