我正在努力"结婚"我的DB中有两个想象中的人。我想要做的是选择一定年龄范围内的人,然后在一列中写下彼此的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语句应该是这样的:
SELECT ID FROM table WHERE age BETWEEN ageMin AND ageMax AND married_to IS NULL
但我不知道如何让SQLite在右栏中编写ID。特别是如何在具有大约150k条目的DB中进行此工作。对我来说,棘手的部分是在没有超级慢程序的情况下始终只写入一行。有人可以帮帮我吗?
答案 0 :(得分:0)
首先,您需要捕获两个ID。一人为A人,一人为B人,为已婚人士。
接下来,您需要在拥有ID后执行两次更新查询:
SQLite允许您select a random row。
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,然后使用其他编程语言将其匹配。然后,您可以自动生成更新查询到"结婚"数据库中的对。