簡體   English   中英

如何使用列的最大值插入?

[英]How to insert using greatest value of a column?

我有兩種類型的插入,一種用於帖子中的新評論,一種用於回復另一條評論。

對評論的回應是

INSERT INTO event_comments(e_id, thread_id, date_posted, is_root, created_by, body, num_likes)

對於新評論,如何使用 thread_id 的最高值插入?

升

但是對於新評論,我如何使用 thread_id 的值 1 來插入? 我將插入值 2,因為當前最高的 thread_id 值為 1

INSERT INTO event_comments(e_id, thread_id, date_posted, is_root, created_by, body, num_likes)
VALUES(
   ..., 2, ..., ..., ..., ..., ...
)

您可以使用INSERT INTO ... SELECT 例如,要使用e_id = 1進行插入,您可以嘗試:

INSERT INTO event_comments(e_id, thread_id, date_posted, is_root, created_by, body, num_likes)
SELECT e_id, thread_id + 1, date_posted, is_root, created_by, body, num_likes
FROM event_comments
WHERE e_id = 1;

注意上面的插入仍然是一個單一的語句,所以應該是原子的。 也就是說,即使其他線程也在讀取並嘗試插入,它們也不應該干擾。

您可以使用ORDER BY獲取最新的threadID並將結果限制為 1。

INSERT INTO event_comments(e_id, thread_id, date_posted, is_root, created_by, body, num_likes)
SELECT e_id, thread_id + 1, date_posted, is_root, created_by, body, num_likes
FROM event_comments
ORDER BY thread_id DESC LIMIT 1;

我會創建一個可為空的thread_id字段,其中包含父級的 id。 新線程是帶有空thread_id的評論。 這也允許嵌套線程。 這也消除了對is_root字段的需要。 我還會在 pages 表中添加一個帶有外鍵的page_id (或者如果您沒有該表,則在其中添加頁面 url)。

暫無
暫無

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

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