如果X选择特定行,如果Y则选择多行

时间:2017-08-02 15:24:22

标签: sql sql-server

我有一个表Table(id,name),但是我们可以在这里使用id

UIViewController

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

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

2 个答案:

答案 0 :(得分:3)

我们假设您的查询中有参数@Id。然后,您可以根据WHERE的值来制定@Id条款:

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

i.Id <> 'all'部分确保永远不会返回'all'行,无论@Id的设置如何。其余的是您的条件转换为SQL(即查询具有'all',或查询匹配单个Id)。

答案 1 :(得分:1)

这看起来像关系表的错误用法,因为“id”列应该只包含id ...

我建议删除“all”行,而是编写一个存储过程来决定是选择所有行还是只选择一行。

无论如何,对于你的例子:

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