我只需要选择条件指定的最后输入的行,例如:
SELECT ID from bugs WHERE user=Me
我只需要返回用户'我'输入的最后一个ID。有一个简单的方法吗?谢谢。
答案 0 :(得分:38)
最好有TIMESTAMP
列,默认为CURRENT_TIMESTAMP
..这是您可以在这里找到的唯一真正的预测行为。
您可以做的第二件事是ORDER BY ID DESC LIMIT 1
,并希望最新的ID是最大值。
答案 1 :(得分:29)
SELECT MAX(ID) from bugs WHERE user=Me
答案 2 :(得分:29)
您可以使用ORDER BY ID DESC
,但如果您这样做会更快:
SELECT * FROM bugs WHERE ID = (SELECT MAX(ID) FROM bugs WHERE user = 'me')
如果你有一张巨大的桌子,它可能会有很大的不同。
修改强>
您甚至可以设置一个变量,以防您需要多次(或者如果您认为它更容易阅读)。
SELECT @bug_id := MAX(ID) FROM bugs WHERE user = 'me';
SELECT * FROM bugs WHERE ID = @bug_id;
答案 3 :(得分:13)
实现这一目标的一种方法是订购记录并限制为1.例如,如果您有下表('数据')。
id | user | price
-------------------
1 | me | 40.23
2 | me | 10.23
尝试以下sql查询
select * from data where user='me' order by id desc limit 1
答案 4 :(得分:8)
在并发中,最新记录可能不是您刚刚输入的记录。最好使用主键获取最新记录。
如果是自动增量字段,请使用SELECT LAST_INSERT_ID();
获取您刚刚创建的ID。
答案 5 :(得分:3)
SELECT * FROM `table_name`
ORDER BY `table_name`.`column_name` DESC
LIMIT 1
答案 6 :(得分:0)
仅在从php运行mysql查询后
通过
获取$lastid=mysql_insert_id();
这给您Alst自动增量ID值
答案 7 :(得分:0)
MySqlCommand insert_meal = new MySqlCommand("INSERT INTO meals_category(Id, Name, price, added_by, added_date) VALUES ('GTX-00145', 'Lunch', '23.55', 'User:Username', '2020-10-26')", conn);
if (insert_meal .ExecuteNonQuery() == 1)
{
long Last_inserted_id = insert_meal.LastInsertedId;
MessageBox.Show(msg, "Success", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
else
{
MessageBox.Show("Failed to save meal");
}
答案 8 :(得分:-1)
从错误中选择ID,其中user = Me ORDER BY CREATED_STAMP DESC; BY CREATED_STAMP DESC首先从上次创建的索引处获取这些数据。
我希望它能解决您的问题