只有当它是与字符串匹配的最新ID(location_is)时,MySQL才会获取行

时间:2016-03-02 03:19:31

标签: mysql

我正在尝试运行一个查询,我希望只有In Stock行才能拥有最高ID。 (例如,同一组mac地址的较低ID是历史记录)

我使用的MySQL版本是4.0.24

+----------------+-------------+-----+
| mac_address_is | location_is | id  |
+----------------+-------------+-----+
| 00xxF7         | In Stock    | 185 |
| 00xxF7         | Out         | 186 |
| 00xx6A         | In Stock    | 200 |
| 00xx6A         | In Stock    | 201 |

我希望这些结果:00xx6A,因为它是唯一一个In Stock作为最大ID。

In Stock的{​​{1}}应该被忽略,因为它不是位置00xxF7中的最新(该Mac的最高ID)。

编辑: 由于软件的版本,我无法使用子查询。 In Stock

另外,我认为我不能使用4.0.24因为我的查询必须返回大约一千个条目。这是最新limit的一千个条目,即`=“库存'。

3 个答案:

答案 0 :(得分:1)

按ID顺序对表格进行排序,过滤库存并将输出中的记录限制为1:

select * from yourtable
where location_is='In Stock'
order by id desc limit 1

答案 1 :(得分:0)

简单的解决方案:

SELECT mac_address_is FROM yourtable 
WHERE location_is="In Stock"
ORDER BY id DESC LIMIT 0,1

答案 2 :(得分:0)

SELECT t.mac_address_is, MAX(t.id) as id
  FROM mytable t
 WHERE t.location_is = 'In Stock'
 GROUP BY t.mac_address_is;