Discuz!官方免费开源建站系统

 找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

[求助] [已解决]请教嵌套的MySQL语句格式怎么写?

[复制链接]
TeliuTe 发表于 2013-12-12 16:51:57 | 显示全部楼层 |阅读模式
本帖最后由 TeliuTe 于 2013-12-14 22:45 编辑

数据表pre_app_zflx结构如下,各个会员有多行记录:
id         uid         name         score         time  
11          1          admin        90        1386584217
12          1          admin        96        1386824755
13          2          admit         48        1386584108
14          2          admit         16        1386584090

现在想要挑出每个会员分数(score)最高的一行,得到:
12          1          admin        96        1386824755
13          2          admit         48        1386584108

在MySQL中使用下列语句可以实现:
select * from `pre_app_zflx` `a` where not exists (select 1 from `pre_app_zflx` `b` where `b`.`uid` = a.`uid` and `b`.`id` > `a`.`id`) order by `score` DESC;

请教这句在插件的 php 文件中该怎么写?
谢先。


1314学习网 发表于 2013-12-12 18:55:23 | 显示全部楼层
discuz不允许嵌套
回复

使用道具 举报

 楼主| TeliuTe 发表于 2013-12-13 08:31:04 | 显示全部楼层
这样,那么像这样从重复里挑出最大值,用什么方法比较好呢
回复

使用道具 举报

 楼主| TeliuTe 发表于 2013-12-13 17:12:51 | 显示全部楼层
本帖最后由 TeliuTe 于 2013-12-14 22:42 编辑

好的,我一会试试
==
group by 不能排序,只能挑出第一条来,
这样把每个用户的第一条记录存放最高分就可以查询出来
  1. //每次更新该用户的第一条记录为最高分
  2.                         DB::query("UPDATE ".DB::table('app_zflx')." SET  score_now='$score_now',title_now='$title_now',gtime= '$tmptime'   WHERE uid='$_G[uid]' ORDER BY id ASC LIMIT 1");
复制代码
  1. 查询各个用户的最高分
  2. $query = DB::query("SELECT * FROM ".DB::table('app_zflx')."  GROUP BY `uid`  ORDER by `score_now` DESC LIMIT $start_limit, 10");
复制代码



回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Discuz! 官方站 ( 皖ICP备16010102号 )star

GMT+8, 2024-11-15 20:28 , Processed in 0.023267 second(s), 4 queries , Gzip On, Redis On.

Powered by Discuz! X3.4

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表