假设您有一张包含10 000个不同电子邮件地址记录的表格,但在此表格中有几百个(这可能有所不同,应该无关紧要)包含特定域名的地址,即@ horses.com。
我想在一个查询中 检索所有10 000条记录,但包含@ horses.com的记录将始终位于列表的顶部。
像这样的东西“SELECT TOP 10000 * FROM dbo.Emails ORDER BY - 包含@ horses.com的记录首先出现”
OR
从dbo.Emails表中给我10000条记录,但不管有多少,都会首先包含“@ horses.com”的所有人。
BTW这是在sql 2012服务器上。
任何??
答案 0 :(得分:1)
试试这个:
SELECT TOP 10000 *
FROM dbo.Emails
ORDER BY IIF(Email LIKE '%@horses.com', 0, 1)
这假设电子邮件以“@ horses.com”结尾,这并非不合理。如果您确实需要类似contains
的功能,请在%
之后添加另一个.com
。
编辑 IIF
功能仅在sql server 2012及更高版本中可用,以便使用CASE WHEN Email LIKE '%@horses.com' THEN 0 ELSE 1 END
更便携的解决方案。
答案 1 :(得分:1)
SELECT TOP 10000 *
FROM dbo.Emails
ORDER BY case when charindex('@horses.com', email) > 0
then 1
else 2
end,
email
答案 2 :(得分:0)
SELECT 1,* FROM dbo.Emails where namn like '%@horses.com%'
union
SELECT 2,* FROM dbo.Emails where namn not like '%@horses.com%'
order by 1