Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有属性优先级的sql查询_Sql_Linq To Sql - Fatal编程技术网

具有属性优先级的sql查询

具有属性优先级的sql查询,sql,linq-to-sql,Sql,Linq To Sql,你好 想象一下我有一张这样的桌子 Id | Name | City 1 | Tom york | xx 2 | Jim york | xy 3 | tony | new York 4 | Sam york | xz 我想搜索名称为“%york%”或城市名称为“%york%”的记录 但是我想给name更多的优先权,所以我的结果应该是: Id | Name | City 1 | Tom york | xx 2 | Jim york

你好 想象一下我有一张这样的桌子

Id | Name       | City
1  | Tom york   | xx
2  | Jim york   | xy
3  | tony       | new York
4  | Sam york   | xz
我想搜索名称为“%york%”或城市名称为“%york%”的记录 但是我想给name更多的优先权,所以我的结果应该是:

Id | Name       | City
1  | Tom york   | xx
2  | Jim york   | xy
4  | Sam york   | xz
3  | tony       | new York
也就是说,首先是名称为“%york%”的记录,然后是城市为“%york%”的记录

构建此查询的最佳方法是什么?我可以在一个查询中完成吗? 用sql或linq对sql的回答会很好


tks

我想你所说的“但是我想给名字更多的优先权”是指你想先得到在
名字中有
“a”
的实体,然后是其他实体(在
城市中有
“a”
)。相应的Linq到SQL查询将是:

Entities
.Where(e => e.Name.Contains("a") || e.City.Contains("a"))
.OrderByDescending(e => e.Name.Contains("a"));
SELECT Id, Name, City
FROM   cities
WHERE Name LIKE 'b%'
   OR City LIKE 'b%'
ORDER BY
   Name LIKE 'b%' DESC

Dan Dumitru解决方案的SQL版本为:

Entities
.Where(e => e.Name.Contains("a") || e.City.Contains("a"))
.OrderByDescending(e => e.Name.Contains("a"));
SELECT Id, Name, City
FROM   cities
WHERE Name LIKE 'b%'
   OR City LIKE 'b%'
ORDER BY
   Name LIKE 'b%' DESC
使用一些示例数据:

Id | Name | City
1  | aa   | bb
2  | bb   | aa
这使得:

Id  Name    City
2   bb      aa
1   aa      bb
鉴于

SELECT Id, Name, City
FROM   cities
WHERE Name LIKE 'b%' 
   OR City LIKE 'b%'
ORDER BY
    Name, City
给出了不正确的:

Id  Name  City
1   aa    bb
2   bb    aa

这是因为在第一个示例中,我们按照匹配的字段进行排序,但在第二个示例中,我们按照字段值进行排序。

您需要使用的搜索字符串是“%a%”,还是可以使用不同的字母或多个字符进行匹配?是的,这只是一个示例,实际上,表中会有真实的名称或城市。tks dan,只有一件事,添加了按顺序递减,但这似乎起到了作用,tks@martin-你是对的,我纠正了,它应该是OrderByDescending而不是OrderBy。