Mysql 有没有办法将这3个SQL查询组合在一起?
目前我有3个独立的查询,我正试图将它们组合在一起,这样效率更高 我将它们放在一起的原因是,我可以按Mysql 有没有办法将这3个SQL查询组合在一起?,mysql,sql,Mysql,Sql,目前我有3个独立的查询,我正试图将它们组合在一起,这样效率更高 我将它们放在一起的原因是,我可以按submitdate对所有结果进行排序,从现在起,它们按submitdate排序,但由每个查询分隔 首先是 获取我评论过的所有有新评论的帖子的查询 二是 获取有关我的帖子的最新回复的查询 三是 获取我的每个帖子的票数的查询 您可以使用UNION将所有查询组合在一起 创建联合的规则 在所有查询中,列的数量和顺序必须相同 数据类型必须兼容 组合这些查询后,您希望在最终输出中包含哪些字段。请根据您的要求
submitdate
对所有结果进行排序,从现在起,它们按submitdate
排序,但由每个查询分隔
首先是
获取我评论过的所有有新评论的帖子的查询
二是
获取有关我的帖子的最新回复的查询
三是
获取我的每个帖子的票数的查询
您可以使用
UNION
将所有查询组合在一起
创建联合的规则
在所有查询中,列的数量和顺序必须相同
数据类型必须兼容
组合这些查询后,您希望在最终输出中包含哪些字段。请根据您的要求寻找合适的联接。@user4221591我希望在最终输出中包含所有字段。在我弄清楚如何将查询网格化后,我可以对其进行排序。您需要在查询之间使用UNION
。请确保每个查询的字段数和数据类型应相同。@sqluser谢谢您的回答,您能举个例子说明我的代码可能是什么样子吗?这正是我要找的。如果我的列顺序不一样怎么办?它只会在行内显示null,还是会抛出错误?您需要在SELECT
语句中设置null
,而不是缺少的任何一个。
SELECT DISTINCT p.*,c.submitdate as MostRecentSubmitDate
FROM posts p
INNER JOIN comments c
ON c.postid = p.id
WHERE c.submitdate > (
SELECT MAX(c2.submitdate)
FROM comments c2
WHERE c2.postid = c.postid
AND c2.deviceID = ?
)
SELECT p.PostTitle,p.id AS PostID,c1.id AS CommentID, c1.comment, q.LatestCommentDate, c1.deviceID
FROM (SELECT c.postid, MAX(c.SubmitDate) AS LatestCommentDate
FROM comments c GROUP BY c.postid) q
INNER JOIN posts p ON q.postid = p.id and ? = p.deviceiD
INNER JOIN comments c1 ON q.LatestCommentDate = c1.submitDate
SELECT * FROM posts
WHERE DEVICEID = ?
AND PostVotes > 0
ORDER BY SUBMITDATE
query 1
UNION
query 2
UNION
query 3
ORDER BY ...