2017-08-02 71 views
-2

多行我有一个表的表(ID,姓名),但让刚刚与ID在这里工作如何选择特定的行如果X,如果Y

id 
-- 
A 
B 
C 
D 
all 

我想是选择所有行(A ,B,C D ...),如果输入是全部,除了“全部”,否则只有特定的值(例如:如果输入是A,则为A)。

你们有这个美味多汁的解决方案吗?谢谢!

+1

您是否在寻找'选择* frmo表1其中id = @x或@x是null'? –

+1

你有什么错误?这是非常基本的SQL。 –

+0

我没有遇到错误,我只需要一点帮助就可以得到完整的解决方案(这是我正在处理的问题的一部分):) – HPeter

回答

3

比方说,您的查询中有一个参数@Id。然后你可以根据@Id的价值制定你的WHERE条款:

SELECT * 
FROM MyTable t 
WHERE i.Id <> 'all' AND (@Id='all' OR @Id=t.Id) 

i.Id <> 'all'部分确保'all'行再也没有回来,不管@Id的设置。其余部分是将您的条件转换为SQL(即,查询有'all',或查询匹配单个Id)。

+0

您也有一个很好的解决方案。另一个人速度更快,这就是为什么我将他标记为答案。不过谢谢你。 – HPeter

+0

哦,你是对的,对不起:) – HPeter

1

这看起来像一个关系表的错误使用的“ID”列应该只包含IDS ...

我建议删除“所有”行,而是写一个存储过程,以决定是否选择所有的行或只有一个。

无论如何,你比如:

SELECT * FROM your_table WHERE (id = @ID OR @ID = 'all') AND id <> 'all' 
+0

感谢队友,这正是我一直在寻找的。欢迎您使用 – HPeter

+0

,您可以将答案标记为已接受;) – ggradnig