簡體   English   中英

檢索用戶表中的最后一個條目

[英]Retrieve the last entry in the user table

我想獲取兩個用戶的id以將它們插入到表的from_user_idto_user_id列中。

這是我嘗試過的:

INSERT INTO message(from_user_id, to_user_id, text, created_at)
SELECT user.id, user.id, "selam", created_at 
FROM user WHERE username = "admin"
FROM user WHERE username = "user_id"

我如何將用戶表中的最后一個用戶 select 作為收件人?

SQL

SELECT TOP 1 * FROM user ORDER BY to_user_id DESC

MySql

SELECT * FROM user ORDER BY to_user_id DESC LIMIT 1

您可以使用子選擇:

INSERT INTO message (from_user_id, to_user_id, text, created_at)
VALUES ((SELECT user.id FROM "user" WHERE username = 'admin'),
        (SELECT user.id FROM "user"
         WHERE created_at = (SELECT max(created_at) FROM "user")
         FETCH FIRST 1 ROWS ONLY),
        'selam',
        created_at);

字符串常量在 SQL 中使用單引號。

基本上,像這樣鏈接到“用戶”表兩次。

SELECT from_user.id, to_user.id, "selam", created_at 
FROM user from_user, user to_user 
WHERE from_user.username = "admin"
AND to_user.username = "user_id"

或者您可以嘗試:

SELECT from_user.id, to_user.id, "selam", created_at 
FROM user from_user
JOIN user to_user ON to_user.username = "user_id"
WHERE from_user.username = "admin"

兩者都將導致相同的 output,只是編寫相同內容的方式不同。

“user_id”和“admin”是用戶名還是 ID? 您可能需要更改:from_user.username 到 from_user.id 和 to_user.username 到 to_user.id

由於您的原始查詢建議用戶名,但“user_id”表示 integer ID 值。

希望這會有所幫助。

暫無
暫無

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

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