无需插入即可在数据库中获取Last ID的有效方法?

时间:2011-03-22 14:09:17

标签: mysql

我有这个表(table1):

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

如何找到上次插入ID的颜色值?简单来说就是:

SELECT * FROM table1 ORDER BY id DESC limit 1  

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

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

$id = $db->lastInsertId();

5 个答案:

答案 0 :(得分:2)

如果您只需要color列的值,那么只选择那个

SELECT color FROM table1 ORDER BY id DESC limit 1

答案 1 :(得分:1)

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

将给出最后一个id和它的颜色 ('*'表示所有列,而不是所有行)

答案 2 :(得分:1)

由于ID不仅是索引,而是主键,因此这是一种有效的操作。如果要在非索引列上使用它,则可能会出现性能问题。 LAST_INSERT_ID()也是一个选项,但仅在当前会话期间插入行时才有效。

答案 3 :(得分:1)

实际上你写的查询是正确的。 sql引擎将转到最后一条记录并接受它。它不会扫描整个表格,因此您不必担心性能。

答案 4 :(得分:0)

如果id是自动增量,则此查询:

SELECT  *
FROM    table1
WHERE   id = LAST_INSERT_ID()

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

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

SELECT  color
FROM    table1
ORDER BY
        id DESC
LIMIT 1