我已经转换了另一个由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')
子句,我可以进一步执行其他任务。这两行给出了相同的结果,但他坚持认为我的逻辑上不好。我很难理解他的解释和怀疑,如果我做错了转换此查询。谁能发表任何意见?
答案 0 :(得分:2)
您在逻辑上是错误的,因为它将带来Peggy Alexander。第一个查询不会吸引她。这似乎不是练习的目的。
答案 1 :(得分:2)
第一个查询将仅带来名称的精确分组。想象一下,如果有人去了名为Carson Justice的学校。您的查询将把他带进去,而老年人的查询则不会。
即
FirstMidName | LastName
Alexander | Carson
Peggy | Justice
Peggy | Carson
Alexander | Justice
高级查询将返回Peggy Justice的Alexander Carson
您的查询将返回所有4个名称(亚历山大·卡森,佩吉·正义,佩吉·卡森,亚历山大·正义)