繁体   English   中英

如何将两个 mysql 查询与 Union 合并并适当地将它们分组

[英]How to combine two mysql query with Union and Group them approprieatly

我有来自同一个表的两个 sql 请求,我想让它们都成为一个,这样第一个的结果将与第二个的结果连接起来。

这是我的第一个请求

$recup_id = mysqli_query($connection, "SELECT MAX(`id`) AS id FROM mytable WHERE 
CASE 
WHEN `to_id`='$id_ojm_peoples' THEN `read_statu`!='$id_ojm_peoples' 
END 

AND (`from_id`='$id_ojm_peoples' OR `to_id`='$id_ojm_peoples')  

AND (is_deleted!='$id_ojm_peoples' AND is_deleted >=0)   

GROUP BY (IF(`to_id`='$id_ojm_peoples', `from_id`, `to_id`))

ORDER BY `read_statu` ASC   LIMIT $nombre_de_messages_maximum

 ") or die(mysqli_error($connection));

第二个看起来像第一个,但有一点不同。

$recup_id = mysqli_query($connection, "SELECT MAX(`id`) AS id FROM mytable WHERE 

CASE 
WHEN `from_id`='$id_ojm_peoples' THEN `read_statu`>='0' 
END 

AND (`from_id`='$id_ojm_peoples' OR `to_id`='$id_ojm_peoples')  

AND (is_deleted!='$id_ojm_peoples' AND is_deleted >=0)   

GROUP BY (IF(`to_id`='$id_ojm_peoples', `from_id`, `to_id`)) 
ORDER BY `read_statu` ASC   LIMIT $nombre_de_messages_maximum

 ") or die(mysqli_error($connection));

我希望在第一个请求之后执行第二个请求,以便它返回第一个请求的结果,然后是第二个请求的结果,并且全部在一个请求中。 这两个请求的区别在于

CASE 
WHEN `from_id`='$id_ojm_peoples' THEN `read_statu`>='0' 
END

CASE 
WHEN `to_id`='$id_ojm_peoples' THEN `read_statu`!='$id_ojm_peoples' 
END

我做了

SELECT MAX(`id`) AS id FROM `mytable` WHERE

CASE 
WHEN `to_id`='$id_ojm_peoples' THEN `read_statu`!='$id_ojm_peoples' 
END 

AND (`from_id`='$id_ojm_peoples' OR `to_id`='$id_ojm_peoples')  

AND (is_deleted!='$id_ojm_peoples' AND is_deleted >=0)   

GROUP BY (IF(`to_id`='$id_ojm_peoples', `from_id`, `to_id`))




UNION




SELECT MAX(`id`) AS id FROM `mytable` WHERE 

CASE 



WHEN `from_id`='$id_ojm_peoples' THEN `read_statu`>='0' 

END 




AND 


(`from_id`='$id_ojm_peoples' OR `to_id`='$id_ojm_peoples')  

AND  

(is_deleted!='$id_ojm_peoples' AND is_deleted >=0)   

GROUP BY (IF(`to_id`='$id_ojm_peoples', `from_id`, `to_id`)) 

然而,这并没有将用户与他们的 Id 分组,而是给了我来自第一个查询的用户,然后是来自第二个查询的用户,而没有将用户分组在一起。 这是上面查询的输出。

联系人列表

正如您所看到的,有些用户出现了两次而不是分组。

请如何组合这两个查询,以便它首先分别返回第一个查询的结果,然后按from_idto_id分组的第二个查询的结果?

联合http://dev.mysql.com/doc/refman/5.0/en/union.html

这就是将 2 个查询合并为 1 个结果的方式。

我不打算给你写,你自己试试,需要的时候寻求帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM