【问题标题】:SELECT/COUNT on 2 tabs, how to result just one tab?在 2 个选项卡上选择/计数,如何只生成一个选项卡?
【发布时间】:2012-05-31 23:10:37
【问题描述】:

这是我的带有 6 个选项卡的点赞表(如果选项卡是正确的名称,则不要这样做)我有一个很好的要求,可以在特定论坛中选择具有更多点赞、最近更新的主题。

http://trotirider.com/stak1.jpg

SELECT tid, Sum(value) AS value_total
FROM punlike
WHERE value = 1
  AND (fid = 31 OR fid = 33)
GROUP BY tid
ORDER BY value_total DESC, tid DESC

http://trotirider.com/stak2.jpg

但我只需要'tid',value_total 只是在这里订购。如何通过此请求仅获得一个选项卡?是否可以通过 sql 请求来实现,还是必须在 php 中通过循环或其他方式来实现?

谢谢。

【问题讨论】:

  • 获取 value_total 有什么问题?如果您不需要该值,您可以在结果集中忽略它。你能描述一下你是如何使用这个查询的吗?
  • 是的,没错……你把我放在路上,我可以这样提取tid:
  • $resultv1 = $db->query('SELECT tid, Sum(value) AS value_total FROM punlike WHERE value = 1 AND (fid = 31 OR fid = 33) GROUP BY tid ORDER BY value_total DESC , tid DESC'); while($resultv1r = $db->fetch_assoc($resultv1)) echo $resultv1r['tid'];
  • 其实我需要这个主题id来显示我想要的主题列表,在这种情况下我想显示最近喜欢的主题。
  • 但如果可以的话,我更喜欢只使用 sql(同时我学习新功能)我在第一个选择中尝试了一个选择,而其他的它不起作用,也许你知道一个提示?

标签: sql select count sum


【解决方案1】:

不确定这是否可行,但试一试:

SELECT tid
FROM punlike
WHERE value = 1
  AND fid IN (31, 33)
GROUP BY tid
ORDER BY SUM(value) DESC, tid DESC;

如果这不起作用,试试这个:

SELECT tid
FROM (SELECT tid, SUM(value) AS value_total
      FROM punlike
      WHERE value = 1
        AND fid IN (31, 33)
      GROUP BY tid
      ORDER BY value_total DESC, tid DESC);

【讨论】:

  • 是的,第一个似乎工作正常,我有相同的结果,但只是像我一样。小费只是订单中的总和(值),很好,非常感谢。
猜你喜欢
  • 2018-10-24
  • 2014-11-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多