簡體   English   中英

將一行中的值寫入另一行和另一列

[英]Writing a value from a row into the another row and column

我試圖在我的數據庫中“嫁給”兩個假想的人。 我要做的是選擇某個年齡范圍內的人員,然后將彼此的ID寫入一欄中。

如果這是我的桌子

ID | sex | age | married to
 1 | M   | 25  | NULL
 2 | F   | 28  | NULL
 3 | M   | 75  | NULL

結果應如下所示:

ID | sex  | age | married_to
 1 | M    | 25  | 2
 2 | F    | 28  | 1
 3 | M    | 75  | NULL

我知道選擇語句應如下所示:

SELECT ID FROM table WHERE age BETWEEN ageMin AND ageMax AND married_to IS NULL

但是我不知道如何讓SQLite在右列中寫入ID。 特別是如何在具有約150k條目的數據庫中實現此目的。 對我來說,棘手的部分是始終只寫一行而沒有一個超級慢的程序。 有人可以幫我嗎?

首先,您需要捕獲兩個ID。 一個人A和一個人B結婚。

接下來,一旦擁有ID,您將需要執行兩個更新查詢:

  1. 將人A的“已婚”更新為人B的ID
  2. 將人B的“已結婚”更新為人A的ID

SQLite允許您選擇隨機行

SELECT ID FROM table WHERE age BETWEEN ageMin 
      AND ageMax AND married_to IS NULL ORDER BY RANDOM() LIMIT 1

您可以執行兩次,檢查以確保ID分開,然后執行更新查詢。

UPDATE table SET married_to = Person_B_ID WHERE ID = *Person A's ID*

UPDATE table SET married_to = Person_A_ID  WHERE ID = *Person B's ID*

您可以多次運行此查詢序列。 但是,RANDOM()的性能可能不適用於大型數據庫。 如果是這種情況,您可能需要運行查詢以獲取需要結婚的人的所有ID,然后使用其他某種編程語言將其匹配。 然后,您可以自動生成更新查詢以“結婚”數據庫中的對。

暫無
暫無

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

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