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