2016-04-28 135 views
0

我有一个选择命令,它工作得很好。从选择命令中排除记录

我想排除一个记录,其中SchoolID =?

我该怎么做?

SelectCommand="SELECT [School], [CenShort], [Center], [NameLevel], 
[Tuition_Tuition] FROM [ASchools] 
WHERE (([SectID] = ?) AND (([LevelNo] = ?) 
     OR ([LevelNo] = ?) OR ([LevelNo] = ?) OR ([LevelNo] = ?) 
     OR ([LevelNo] = ?)) AND (([TSchools_Tuition] = ?) OR ([TSchools_Tuition] = ?) 
     OR ([TSchools_Tuition] = ?)) AND ([Gender] = ?))"> 
+3

只需将它添加到你的'where'子句中,只有'SchoolID <>?' – HoneyBadger

+2

使用AND。 (顺便说一句,你可以做[[LevelNo] IN(?,?,?...'而不是所有那些OR)。 – jarlh

+0

不要忘了Bobby Tables http://bobby-tables.com/ –

回答

0

试试这个

SelectCommand="SELECT [School], [CenShort], [Center], [NameLevel], 
[Tuition_Tuition] FROM [ASchools] 
WHERE (([SectID] = ?) AND (([LevelNo] = ?) 
     OR ([LevelNo] = ?) OR ([LevelNo] = ?) OR ([LevelNo] = ?) 
     OR ([LevelNo] = ?)) AND (([TSchools_Tuition] = ?) OR ([TSchools_Tuition] = ?) 
     OR ([TSchools_Tuition] = ?)) AND ([Gender] = ?) and school<>?)"> 
+0

谢谢Madhivanan您的回复很有帮助 –

0

我会建议在附加条件附加到WHERE子句的末尾。还可以使用语法IN (valueA,valueB,valueC)使您的查询更易于阅读。

SelectCommand= 
@"SELECT [School], [CenShort], [Center], [NameLevel], [Tuition_Tuition] 
FROM [ASchools] 
WHERE [SectID] = ? 
    AND [LevelNo] in(?,?,?,?) 
    AND [TSchools_Tuition] in (?,?,?) 
    AND [Gender] = ? 
    AND [SchoolID] <> ?" 
+1

虽然此代码可能回答此问题,但提供有关此代码为何和/或如何回答此问题的其他上下文可提高其长期价值。 – ryanyuyu

0

在SQL你也可以这样做:

WHERE ... 
AND NOT SchoolID = ? 
0

如果SchoolID是您的主要搜索参数,那么你就应该改革的where子句是这样的:WHERE SchoolID <>?和(...你有的所有其他条件)。 因此,现在您的查询将首先排除某些SchoolID的记录,然后进一步处理其他条件。