MySQL查询获取字段特定值所在行数据

例如,当topicId相同时,查询bookStatus为2所在行的数据,若不存在,则查询bookStatus为1中missionId最大所在行的数据。

SELECT
	rm.id missionId,
	rm.cover,
	rm.mission_type bookStatus,
	rm.`name`,
	DATE_FORMAT( rm.end_time, '%Y-%m-%d %H:%i:%s' ) endTime,
	rm.topic_id topicId,
	rm.create_user_id createUserId
FROM
	re_mission_0 rm 
WHERE
	(
	( rm.class_id = 1121681 AND rm.mission_type = 2 ) 
	OR ( rm.create_user_id = 63878210 AND rm.mission_type = 1 ) 
	) 
	AND rm.publish_status IN ( 1, 3 ) 
	AND rm.fid = 7179 

结果:

首先要按bookStatus倒叙,其次按missionId倒叙。修改为:

SELECT
	* 
FROM
	(
SELECT
	rm.id missionId,
	rm.cover,
	rm.mission_type bookStatus,
	rm.`name`,
	DATE_FORMAT( rm.end_time, '%Y-%m-%d %H:%i:%s' ) endTime,
	rm.topic_id topicId,
	rm.create_user_id createUserId,
	1 missionStatus,
	rr.`level` 
FROM
	re_mission_0 rm
	JOIN re_res rr ON rr.fanya_res_id = rm.topic_id 
WHERE
	(
	( rm.class_id = 1121681 AND rm.mission_type = 2 ) 
	OR ( rm.create_user_id = 63878210 AND rm.mission_type = 1 ) 
	) 
	AND rm.publish_status IN ( 1, 3 ) 
	AND rm.fid = 7179 
ORDER BY
	rm.mission_type DESC,
	rm.id DESC 
	) t 
GROUP BY
	t.topicId 
ORDER BY
	t.missionId DESC;

结果:

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值