Mysql 把它放在与其他结果相同的顺序上是很困难的…这就是问题所在。你能用你的表和一些样本数据创建一个SQL吗?从那里进行调试可能会更容易。感谢bluefeet-找到了问题所在。见下面我的答案。将+1作为帮助您的答案。@KB。我很高兴你找到了答案这仍然将“1”作为r
Mysql 把它放在与其他结果相同的顺序上是很困难的…这就是问题所在。你能用你的表和一些样本数据创建一个SQL吗?从那里进行调试可能会更容易。感谢bluefeet-找到了问题所在。见下面我的答案。将+1作为帮助您的答案。@KB。我很高兴你找到了答案这仍然将“1”作为r,mysql,sql,Mysql,Sql,把它放在与其他结果相同的顺序上是很困难的…这就是问题所在。你能用你的表和一些样本数据创建一个SQL吗?从那里进行调试可能会更容易。感谢bluefeet-找到了问题所在。见下面我的答案。将+1作为帮助您的答案。@KB。我很高兴你找到了答案这仍然将“1”作为rownum。它如何决定将哪个用户ID放入“@prev”中?我如何让它以与其他结果相同的顺序排列…这似乎就是问题所在。你能用你的表和一些示例数据创建一个SQL吗?从那里进行调试可能会更容易。感谢bluefeet-找到了问题所在。见下面我的答案。将
把它放在与其他结果相同的顺序上是很困难的…这就是问题所在。你能用你的表和一些样本数据创建一个SQL吗?从那里进行调试可能会更容易。感谢bluefeet-找到了问题所在。见下面我的答案。将+1作为帮助您的答案。@KB。我很高兴你找到了答案这仍然将“1”作为rownum。它如何决定将哪个用户ID放入“@prev”中?我如何让它以与其他结果相同的顺序排列…这似乎就是问题所在。你能用你的表和一些示例数据创建一个SQL吗?从那里进行调试可能会更容易。感谢bluefeet-找到了问题所在。见下面我的答案。将+1作为帮助您的答案。@KB。我很高兴你找到了答案这成功了!我认为qp.created周围的date()也会对查询产生负面影响。但是给你一个绿色的记号。谢谢这成功了!我认为qp.created周围的date()也会对查询产生负面影响。但是给你一个绿色的记号。谢谢
SELECT DISTINCT
tmp.title,
tmp.content,
tmp.postid,
tmp.userid,
tmp.screenname,
tmp.email
FROM
(
SELECT
qp.title,
qp.content,
qp.postid,
ut.userid,
ut.screenname,
ut.email,
qp.created,
@rownum := IF( @prev = ut.userid, @rownum+1, 1 ) AS rank,
@prev := ut.userid
FROM
user_table AS ut JOIN (SELECT @rownum := NULL, @prev := 0) AS r ,
qa_posts AS qp,
qa_categories AS qc,
expatsblog_country AS cc
WHERE
LOWER(ut.country_of_expat) = LOWER(qc.title)
AND ut.setting_notifications IN (3)
AND ut.valid=1
AND ut.confirm_email = 1
AND qc.categoryid = qp.categoryid
AND qp.type='Q'
AND DATE(qp.created)>=DATE_SUB(NOW(), INTERVAL 24 HOUR)
ORDER BY ut.userid,qp.created ASC
) AS tmp
WHERE tmp.rank < 10
ORDER BY tmp.userid, tmp.created ASC
FROM user_table AS ut JOIN (SELECT @rownum := NULL, @prev := 0) AS r ,
qa_posts AS qp,
qa_categories AS qc,
expatsblog_country AS cc
SELECT DISTINCT tmp.title,
tmp.content,
tmp.postid,
tmp.userid,
tmp.screenname,
tmp.email
FROM
(
SELECT src.title,
src.content,
src.postid,
src.userid,
src.screenname,
src.email,
src.created,
@rownum := IF( @prev = src.userid, @rownum+1, 1 ) AS rank,
@prev := src.userid
FROM
(
select ut.userid,
ut.screenname,
ut.email,
qp.title,
qp.content,
qp.postid,
qp.created
from user_table AS ut
join qa_categories AS qc
on LOWER(ut.country_of_expat) = LOWER(qc.title)
join qa_posts AS qp
on qc.categoryid = qp.categoryid
where ut.setting_notifications IN (3)
and ut.valid=1
and ut.confirm_email = 1
and qp.type='Q'
and DATE(qp.created)>=DATE_SUB(NOW(), INTERVAL 24 HOUR)
) src
CROSS JOIN
(
SELECT @rownum := 0, @prev := 0
) AS r
CROSS JOIN expatsblog_country AS cc
ORDER BY src.userid, src.created ASC
) AS tmp
WHERE tmp.rank < 10
ORDER BY tmp.userid, tmp.created ASC
SELECT DISTINCT
tmp.title,
tmp.content,
tmp.postid,
tmp.userid,
tmp.screenname,
tmp.email,
@rownum := IF( @prev = ut.userid, @rownum+1, 1 ) AS rank,
@prev := ut.userid
FROM
( SELECT DISTINCT
qp.title,
qp.content,
qp.postid,
ut.userid,
ut.screenname,
ut.email
FROM
user_table AS ut
JOIN qa_categories AS qc
ON LOWER( ut.country_of_expat ) = LOWER( qc.title )
JOIN qa_posts AS qp
ON qc.categoryid = qp.categoryid
AND qp.type='Q'
AND DATE(qp.created)>=DATE_SUB(NOW(), INTERVAL 24 HOUR)
WHERE
ut.setting_notifications = 3
AND ut.valid = 1
AND ut.confirm_email = 1
ORDER BY
ut.userid,
qp.created ASC ) AS tmp,
( SELECT @rownum := NULL,
@prev := 0) AS r
HAVING
tmp.rank < 10
ORDER BY
tmp.userid
( SELECT @rownum := NULL,
@prev := 0) AS r