如何将特定记录保存在datalist的第一个位置?

时间:2015-04-08 06:20:39

标签: c# sql asp.net ado.net datalist

我使用datalist作为我的一个场景。 Datalist项目是:姓名和电子邮件。这些东西都是从数据库绑定的。到现在为止还挺好。

概念

用户将在注册表中注册其姓名和电子邮件ID。注册完成后,数据将存入表格(注册)。用户还需要验证他们的电子邮件ID。已验证的电子邮件将存储在我的数据库中的其他表格(已验证)中。

我想要的是:

我首先需要显示已验证的项目。之后,未验证的项目应显示在我的datalist中。

我尝试的是:

我使用了DataList Itemdatabound。我可以在验证和未验证的项目之间做色差。但我最初没有显示已验证的记录。

我的查询如下,

Select Distinct t1.name from Registration as t1 
inner join Verification as t2 on t1.Email=t2.Email 
and t2.status='Success'

2 个答案:

答案 0 :(得分:2)

尝试以下代码。此处的ORDER BY T2.Status DESC子句将确保首先检索存在于注册和验证表中的那些记录。有关ORDER BY的更多信息,请参阅此处:https://msdn.microsoft.com/en-us/library/ms188385.aspx

  SELECT name, T1.Email
      FROM Registration T1
        LEFT JOIN Verification T2
          ON T1.Email = T2.Email
     ORDER BY T2.status DESC, T1.name ASC

答案 1 :(得分:0)

试试这个:(我已经编辑了我的答案,以避免订单错误和明确错误)

SELECT name, status
FROM (
    SELECT Distinct t1.name as name, t2.status as status
    FROM Registration as t1 
    LEFT JOIN Verification as t2 ON t1.Email=t2.Email 
    ) InnerSelect
ORDER BY CASE WHEN status='Success' THEN 0 ELSE 1 END, -- This is the 'trick'...
name