2011-03-22 52 views
1

我有这个表(表1):无需插入即可获取数据库中最后一个ID的有效方法?

id = 1 , color = red 
id = 2 , color = blue 

如何找到最后一个ID的颜色值插入?它是简单的:

SELECT * FROM table1 ORDER BY id DESC limit 1 

然后获取颜色?有没有更高效的方法?而不是选择*,只是告诉它去最后一行,找到颜色?

我不能使用最后一个插入,因为我没有插入任何东西。

$id = $db->lastInsertId(); 

回答

1

其实你写的查询是正确的。 sql引擎将转到最后一条记录并采取它。它不会扫过整个桌子,所以你不必担心性能。

0

如果id被自动增量,这个查询:

SELECT * 
FROM table1 
WHERE id = LAST_INSERT_ID() 

将返回在当前会话中最后插入(除非你插入其他自增表中之间)的颜色

如果您总体上需要最后一个值(不仅在当前会话中),那么你的查询就很好。

SELECT color 
FROM table1 
ORDER BY 
     id DESC 
LIMIT 1 
1
SELECT id, color FROM table1 ORDER BY id DESC limit 1 

会给最后一个ID,它的颜色 (以下简称“*”表示所有列,不是所有的行)

1

由于ID不仅索引,但主键,这是一个高效的操作。如果您要在非索引列上使用它,您可能会遇到性能问题。 LAST_INSERT_ID()也是一个选项,但仅适用于在当前会话期间插入行的情况。

2

如果你只需要色列的值,然后选择只是

SELECT color FROM table1 ORDER BY id DESC limit 1 
相关问题