0

我有两个 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 个查询合并到一个查询中,这怎么可能?

4

2 回答 2

1

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

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

这样您就可以确定合适的集合。

编辑:添加了外部选择,以便我们可以按“标志”列排序,这样我们就可以一次处理一组。但是您仍然会在一个结果中有两组,必须对其进行解析。

于 2012-07-21T19:13:00.340 回答
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)
于 2012-07-21T19:04:00.700 回答