簡體   English   中英

在這種情況下需要一個SQL查詢語句

[英]Need a SQL query statement for this case

這是表格的結構

mysql> select * from p1;
+----------+-------+-----------+
| username | token | last_used |
+----------+-------+-----------+
| a        | aacs  |         5 |
| d        | dddd  |         3 |
| a        | aaaaa |         3 |
+----------+-------+-----------+

如何從用戶名查詢的集合中刪除last_used值最小的記錄? 在這種情況下,給定的用戶名參數為'a',然后我保留刪除記錄'a','aaaaa',3,因為3小於5(last_used(5)的用戶名也為'a')。

我的答案是

delete from persistent_logins 
where last_used=(select * 
                 from (select MIN(last_used) 
                       from persistent_logins where username=?)as t
                 ) 
  and username=?

但這很有用,我需要一個聲明,如delete .... from..where username=? 重要的是只允許使用一個參數。但是我的答案有兩個參數。

實際上,您可以將ORDER BYLIMITDELETE 將按LIMIT順序控制刪除的行數。

如果指定了ORDER BY子句,則按指定的順序刪除行。 LIMIT子句限制可以刪除的行數。

(來源: https : //dev.mysql.com/doc/refman/5.0/en/delete.html

嘗試這樣的事情:

DELETE FROM p1
WHERE username = ?
ORDER BY last_used ASC
LIMIT 1

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM