我想创建20行表数据,以存储最近查看过的页面。表格行不应超过20行。
例如,带有标题的前20行页面ID将存储在该表中。当用户查看第21页时,第一个帖子ID和帖子标题将被删除(即首次查看帖子)并在同一个表格中插入(即最后查看的帖子)。
我的表格格式:
-------------------------------|
ID | Post Title
-------------------------------|
1 | Post Title 1
2 | Post Title 2
3 | Post Title 3
...
20 | Post Title 20
-------------------------------|
如果有人请告诉我如何通过优化qry来做到这一点。
答案 0 :(得分:1)
你有两列id和title。让我们考虑一下id的值可以超过20.任何时候这个表最多包含20行(根据你的需要)。
Understand following terms:
min(id) // will give minimum value in column id
max(id) // will give maximum value in column id
count(id) // counts total number of rows of your table
new_id // id of row which will be inserted next
算法:
if(count(id)<20) // table have less than 20 rows so only insert
new_id = max(id)+1
insert the row with id as 'new_id' and page title
else // table have more than 20 rows so delete and then insert
delete row with id = min(id)
new_id = max(id)+1
insert the row with id as 'new_id' and page title
以上解决方案建议的是,如果您继续插入少于20行,因为空间仍然存在。但是,当您看到行大于或等于20时,首先删除具有最小id的行,然后通过添加一个来插入最大id为column的新行。
答案 1 :(得分:0)
您可以执行以下操作:
LOCK TABLES mytable;
INSERT INTO mytable (title) VALUES ('newtitle');
DELETE t FROM mytable t WHERE t.id IN (SELECT t2.id FROM (SELECT * FROM mytable) t2 ORDER BY t2.id DESC LIMIT 20,999999999); --Delete from 20 to "end"
UNLOCK TABLES;
答案 2 :(得分:0)
上述步骤只能在一个查询中进行管理,如果您擅长编写查询
答案 3 :(得分:0)
:
jsfiddle