Sql语句解释

来源:百度知道 编辑:UC知道 时间:2024/06/01 22:51:28
SELECT * from uds_bbs_forumitem m
where COALESCE(last_replay_time,send_time) = (select max(COALESCE(last_replay_time,send_time))
from uds_bbs_forumitem n where m.board_id =n.board_id)

其中
select max(COALESCE(last_replay_time,send_time))
from uds_bbs_forumitem 表示根据COALESCE函数查询满足条件的的最大值,但
where COALESCE(last_replay_time,send_time) = (select max(COALESCE(last_replay_time,send_time))
from uds_bbs_forumitem n where m.board_id =n.board_id)
这一句不知做何解。

SELECT * from uds_bbs_forumitem m /*这里就是查询啊 表名是 uds_bbs_forumitem 把表从新命名为 m */

where COALESCE(last_replay_time,send_time) = (select max(COALESCE(last_replay_time,send_time))
from uds_bbs_forumitem n where m.board_id =n.board_id)
/* 这里是查询语句 查询语句里有子查询 (select max(COALESCE(last_replay_time,send_time))
from uds_bbs_forumitem n where m.board_id =n.board_id) 子查询的意思是
在uds_bbs_forumitem(表被从命名了 为 n)表里 搜索 m表里的字段board_id等于n表里的board_id 意思是外面的查询和子查询搜索的是同一条记录 在用coalesce函数得到的最大的值 等于 coalesce函数下的m表里的last_replay_time,send_time字段的记录 */
--(m表就是上面那个 n表就是子查询里的 虽然是一个表 但是现在有了区别)

你这样理解:
select max(COALESCE(last_replay_time,send_time))
from uds_bbs_forumitem n where m.board_id =n.board_id
是一个部分
SELECT * from uds_bbs_forumitem m
where COALESCE(last_replay_time,send_time) = (里面是上句话的结果)