[英]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_id
, to_id
分组的第二个查询的结果?
联合http://dev.mysql.com/doc/refman/5.0/en/union.html
这就是将 2 个查询合并为 1 个结果的方式。
我不打算给你写,你自己试试,需要的时候寻求帮助。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.