求sql查询语句

Mr.Huang…… 2017-11-17 05:16:35


create table 模板
(
模板ID INT ,
限制id int,
对应ID INT
)

INSERT INTO 模板
SELECT 1,1,11 UNION
SELECT 1,2,22 UNION
SELECT 2,3,33 UNION
SELECT 3,4,44


SELECT *
FROM 模板
where
(限制id<>1 or (限制id=1 and 对应ID=11))
and (限制id<>2 or (限制id=2 and 对应ID=22))
and (限制id<>3 or (限制id=3 and 对应ID=33))
and (限制id<>4 or (限制id=4 and 对应ID=44))
and (限制id<>5 or (限制id=5 and 对应ID=44))

模板ID 限制id 对应ID
1 1 11
1 2 22
2 3 33

有限制的模板就会向模板表写入数据,现在需要查询数据,麻烦大神简化下
...全文
183 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
二月十六 2017-11-18
  • 打赏
  • 举报
回复
这些条件都是写死的?是不是应该写个存储过程,然后一些条件参数是传过来的?
日月路明 2017-11-18
  • 打赏
  • 举报
回复
如果条件这么复杂,我建议楼主重新梳理一下你的业务逻辑,一个字:乱
日月路明 2017-11-18
  • 打赏
  • 举报
回复
可以简化成 (限制id<>1 or 对应ID=11) and (限制id<>2  or 对应ID=22) and (限制id<>3 or 对应ID=33) and (限制id<>4 or 对应ID=44) and (限制id<>5 or 对应ID=44)
Mr.Huang…… 2017-11-17
  • 打赏
  • 举报
回复
引用 2 楼 appetizing_fish1 的回复:
看不太明白楼主的意思
对应ID是传的参数,不是固定值; 比如这个模板有限制条件,就会根据选择的限制id和填写的对应ID写一条数据到表中,总共5个限制ID,没选择的不写入,视为这个限制ID不做任何限制
顺势而为1 2017-11-17
  • 打赏
  • 举报
回复
看不太明白楼主的意思
Mr.Huang…… 2017-11-17
  • 打赏
  • 举报
回复

SELECT *
FROM 模板
where 
(限制id<>1 or (限制id=1 and 对应ID=11))
and (限制id<>2 or (限制id=2 and 对应ID=22))
and (限制id<>3 or (限制id=3 and 对应ID=33))
and (限制id<>4 or (限制id=4 and 对应ID=33))
and (限制id<>5 or (限制id=5 and 对应ID=55))
上门的查询是这样的

27,579

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server 应用实例
社区管理员
  • 应用实例社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧