gpt4 book ai didi

c# - 序列数据库字段和更新排序顺序的查询

转载 作者:行者123 更新时间:2023-11-30 21:24:41 25 4
gpt4 key购买 nike

我想让我的应用程序的用户能够定义多个(比方说)电子邮件地址。然后我想给他们重新排列这些地址的能力,所以主要地址在上面,次要地址在下面,等等。

假设我在数据库中有一个 UserEmailAddresses 表,用于链接用户 (UserId) 和电子邮件地址 (EmailAddressId)。

1) 我应该将哪种数据类型(int、float 等)用于保存这些电子邮件地址排序顺序的字段?

2) 当用户重新排列他们的位置时,什么查询可以有效地改变这些序列号?一定要修改多条记录吗?

(我正在使用 C# 和 Linq,但欢迎使用伪代码)。

最佳答案

您需要添加一个整数字段来存储电子邮件地址的排序顺序。

随着新电子邮件地址的添加,它们会被分配到下一个排序顺序 ID。如果地址需要在现有地址之上排序,我会使用更新语句更新所有电子邮件地址,其排序顺序 ID 大于所需的排序顺序索引,然后更新重新排序的电子邮件地址以具有所需的排序顺序索引。

Table Schema
-----------------------
EmailID INT primary Key //Auto increment
EmailAddress Varchar(N)
SortOrderIdx INT //This would control your display order
UserID INT //This would be the owner of this particular email list

Email Create Statement
-----------------------
SELECT @NewSortOrdrIdx = MAX(SortOrderIdx)+1
FROM EmailTable
WHERE UserId = @UserID

INSERT INTO EmailTable (EmailAddress, SortOrderIdx, UserID)
VALUES (@EmailAddress, @NewSortOrdrIdx, @UserID)

Email Reorder Statement
-----------------------
UPDATE EmailTable
SET SortOrderIdx = SortOrderIdx + 1
WHERE SortOrderIdx >= @desired_Sort_Order_Idx AND UserID = @UserID

UPDATE EmailTable
SET SortOrderIdx = @desired_Sort_Order_Idx
WHERE EmailID = @resorted_Email_ID AND UserID = @UserID

Email Select Statement
-----------------------
SELECT EmailAddress
FROM EmailTable
WHERE UserID = @UserID
ORDER BY SortOrderIdx ASC

关于c# - 序列数据库字段和更新排序顺序的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1075162/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com