从下表中可以看出:
id | node_id | promoted | group_type | created_at |status
------------------------------------------------------------------
8 | 4321 | 1 | 3 | 2018-01-08 13:29:55| 1
4 | 4321 | 0 | 3 | 2018-01-06 11:22:53| 1
3 | 4321 | 0 | 1 | 2018-01-05 23:19:02| 1
2 | 4321 | 1 | 1 | 2018-01-05 21:20:15| 1
1 | 4321 | 1 | 3 | 2018-01-05 11:09:51| 1
每个id
我必须获得一个group_type
和group_type
个值。
如果组中有提升的项目,则查询应返回id
和group_type
。
如果组中有多个提升的项目,则应返回最近提升的记录。
如果组中没有提升的项目,查询应该返回最近的记录。
使用下面的查询我设法得到了我需要的几乎
SELECT a.id, a.group_type, a.promoted, a.created_at
FROM (
SELECT group_type, MAX(promoted) AS max_promoted
FROM nodes
WHERE node_id=4321 AND status=1
GROUP BY group_type
) AS g
INNER JOIN nodes AS a
ON a.group_type = g.group_type AND a.promoted = g.max_promoted
WHERE node_id= 4321 AND status=1 ORDER BY created_at
不幸的是,当组中有多个推广项目时,我得到了两个。
知道如何每组只获得一个推广项目吗?
修改 如果有多个组,则查询应返回多行但每组一行。
答案 0 :(得分:0)
您可以通过在查询末尾添加LIMIT 0,1
来限制查询结果。
如果您已经订购了结果,那么它将起作用。
有关LIMIT的更多信息,请参阅:https://dev.mysql.com/doc/refman/5.7/en/limit-optimization.html
答案 1 :(得分:0)
已编辑:您应该在if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
sharedElementEnterTransition = android.transition.TransitionInflater.from(context).inflateTransition(android.R.transition.move)
}
中订购商品,以便根据需要获得最新的商品和descending
件商品,例如1或2,依此类推。此外,limit
将有助于获得最新结果,如果未提升,则提升。最后一个union
将只生成单个(必需)行。这是您的查询:
limit
希望它有所帮助!