按组mysql获取最大ID
我有一张桌子叫sw_ 我想知道id单元的当前状态和id种类,具体取决于日期。 我有一个疑问:按组mysql获取最大ID,mysql,group-by,subquery,Mysql,Group By,Subquery,我有一张桌子叫sw_ 我想知道id单元的当前状态和id种类,具体取决于日期。 我有一个疑问: SELECT sw_sowing.id_unit, sw_sowing.id_variety, sw_sowing.type, sw_sowing.status FROM ( SELECT MAX(id) AS id FROM sw_sowing WHERE date <= '2018-09-06' GROUP BY id_unit
SELECT sw_sowing.id_unit, sw_sowing.id_variety, sw_sowing.type, sw_sowing.status
FROM (
SELECT MAX(id) AS id
FROM sw_sowing
WHERE date <= '2018-09-06'
GROUP BY id_unit
) AS sw
INNER JOIN sw_sowing ON sw_sowing.id = sw.id
问题是id_unit=3有两个不同的id_变体,state=100,但是前面的查询给出了最后一个id_变体,我想要两个id_变体
大概是这样的:
-----------------------------------------------------
id_unit | id_variety | type | status |
-----------------------------------------------------
1 | 2 | SW | 100 |
-----------------------------------------------------
2 | 3 | ER | 100 |
-----------------------------------------------------
3 | 1 | SW | 100 |
-----------------------------------------------------
3 | 2 | SW | 100 |
-----------------------------------------------------
我希望你能帮助我 只需将id_多样性包含在群组中即可
SELECT sw_sowing.id_unit, sw_sowing.id_variety, sw_sowing.type, sw_sowing.status
FROM (
SELECT MAX(id) AS id
FROM sw_sowing
WHERE date <= '2018-09-06'
GROUP BY id_unit,id_variety
) AS sw
INNER JOIN sw_sowing ON sw_sowing.id = sw.id
我不知道您为什么有这个要求,但我认为您可以通过以下查询实现这一点:
SELECT id_unit, id_variety, type, status FROM sw_sowing WHERE id IN (
SELECT MAX(id) FROM sw_sowing WHERE (id_unit, date) IN (
SELECT id_unit, MAX(date) FROM sw_sowing
WHERE date <= '2018-09-06'
GROUP BY id_unit)
GROUP BY id_unit, id_variety)
希望这有帮助。那么为什么要搜索最大ID?如果您需要获取,请搜索state=100。@Shadow因为如果我需要知道id\u单元的状态,例如在'2017-08-09'中,结果是id\u单元=1的类型为'SW',状态为200,id\u多样性为1,很抱歉,我没有得到您想要的。我认为你应该编辑你的问题并解释选择标准。如果被否决,请分享评论,这样我就可以知道这不能解决问题的原因。
SELECT sw_sowing.id_unit, sw_sowing.id_variety, sw_sowing.type, sw_sowing.status
FROM (
SELECT MAX(id) AS id
FROM sw_sowing
WHERE date <= '2018-09-06'
GROUP BY id_unit,id_variety
) AS sw
INNER JOIN sw_sowing ON sw_sowing.id = sw.id
SELECT id_unit, id_variety, type, status FROM sw_sowing WHERE id IN (
SELECT MAX(id) FROM sw_sowing WHERE (id_unit, date) IN (
SELECT id_unit, MAX(date) FROM sw_sowing
WHERE date <= '2018-09-06'
GROUP BY id_unit)
GROUP BY id_unit, id_variety)