Mysql查询在QUERY中,id中只有1个结果

时间:2012-06-21 14:21:13

标签: php mysql

请原谅我头衔的含糊不清,我真的不知道如何简明扼要地写下我想做的事。

我有一张表

name - str item_id - int position - int

  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

有没有人试过这样做?任何帮助将不胜感激。我是否需要以某种方式使用子选择?

2 个答案:

答案 0 :(得分:4)

使用可用的 MIN()

SELECT name, item_id, MIN(position)
FROM my_table 
WHERE item_id IN (17, 3) AND name != ''
GROUP BY item_id;

答案 1 :(得分:1)

我认为您可能正在寻找MIN()功能。

  

MySQL MIN函数用于查找记录集中具有最小值的记录。

尝试以下几点:

"SELECT name, item_id, MIN(position) 
 FROM my_table 
 WHERE item_id IN (17, 3) AND name != ''
 GROUP BY item_id";