我有这个表(table1):
id = 1 , color = red
id = 2 , color = blue
如何找到上次插入ID的颜色值?简单来说就是:
SELECT * FROM table1 ORDER BY id DESC limit 1
然后得到颜色?有更有效的方法吗?而不是选择*,只是告诉它去最后一行并找到颜色?
我不能使用最后一个插入,因为我没有插入任何东西。
$id = $db->lastInsertId();
答案 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