这两个SQL查询之间的区别

时间:2019-07-11 02:11:24

标签: sql

我已经转换了另一个由senoir开发人员编写的sql查询,该开发人员也是小组负责人,我是编程新手。他编写了一个查询,该查询通过发送参数数组从数据库读取行集合,例如:

Database.SetInitializer<ApplicationDbContext>(null);

但是,我被分配以提高查询的安全性。我做了一些更改,将SELECT [LastName],[FirstMidName],[EnrollmentDate] FROM [ContosoUniversity1].[dbo].[Student] WHERE ([LastName] ='Alexander' AND [FirstMidName] = 'Carson') OR ([LastName] ='Justice' AND [FirstMidName] = 'Peggy') 应用于查询。查询写为:

sqlParameter()

因此,基本上它遵循SELECT [LastName],[FirstMidName],[EnrollmentDate] FROM [ContosoUniversity1].[dbo].[Student] WHERE [LastName] IN ('Alexander','Justice') AND [FirstMidName] IN ('Carson','Peggy') 子句,我可以进一步执行其他任务。这两行给出了相同的结果,但他坚持认为我的逻辑上不好。我很难理解他的解释和怀疑,如果我做错了转换此查询。谁能发表任何意见?

2 个答案:

答案 0 :(得分:2)

您在逻辑上是错误的,因为它将带来Peggy Alexander。第一个查询不会吸引她。这似乎不是练习的目的。

答案 1 :(得分:2)

第一个查询将仅带来名称的精确分组。想象一下,如果有人去了名为Carson Justice的学校。您的查询将把他带进去,而老年人的查询则不会。

FirstMidName  |  LastName
Alexander     |  Carson
Peggy         |  Justice
Peggy         |  Carson
Alexander     |  Justice

高级查询将返回Peggy Justice的Alexander Carson

您的查询将返回所有4个名称(亚历山大·卡森,佩吉·正义,佩吉·卡森,亚历山大·正义​​)