请原谅我的标题含糊不清,我真的不知道如何简洁地写出我想做的事情。
我有一张桌子
名称 - STRitem_id - 国际位置 - 国际
name item_id position
| 6asd | 17 | 1 |
| asdf | 3 | 1 |
| asdf | 3 | 2 |
| asdf | 3 | 3 |
| asdf | 3 | 4 |
我正在尝试对item_ids
列表使用 IN 查询,并且每个项目只返回 1 行,这应该是位置最低的行。
select name, item_id, position from my_table
WHERE item_id IN (17, 3) AND name != '';
当我只尝试返回最低位置时,这将返回item_id的所有行。 当然,我查看了ORDER_BY和LIMIT,但我的查询仅针对整个结果集完成,而不是针对每个id单独完成。
ORDER BY position ASC LIMIT 1
以前有没有人尝试过这样做?? 任何帮助将不胜感激。我需要以某种方式使用子选择吗?
使用可用的 MIN()。
SELECT name, item_id, MIN(position)
FROM my_table
WHERE item_id IN (17, 3) AND name != ''
GROUP BY item_id;
我想你可能正在寻找MIN()函数。
MySQL MIN函数用于找出记录集中具有最小值的记录。
尝试以下操作:
"SELECT name, item_id, MIN(position)
FROM my_table
WHERE item_id IN (17, 3) AND name != ''
GROUP BY item_id";