一个SQL的逻辑判断问题

inghot 2014-11-14 02:53:53
一个表数据如下:
orderNO isLock clientID
100000001 0 100
100000002 1 100
100000003 0 100

我现在要判断一个订单号是否存在里面,如果存在的话,是否isLock为1,这个SQL语句该怎么写?
如100000004 它不存在,返回true/1
100000001 它存在但是isLock为0,返回true/1
100000002 它存在,并且isLock为1,clientID为100,返回true/1;否则返回false/0
...全文
168 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
Tiger_Zhao 2014-11-14
  • 打赏
  • 举报
回复
WITH table1(orderNO,isLock,clientID) AS (
SELECT 100000001,0,100 UNION ALL
SELECT 100000002,1,100 UNION ALL
SELECT 100000003,0,100 UNION ALL
SELECT 100000005,1,200
)
,query(orderNO) AS (
SELECT 100000004 UNION ALL
SELECT 100000001 UNION ALL
SELECT 100000002 UNION ALL
SELECT 100000005
)
SELECT q.orderNO,
CASE WHEN ISNULL(t.isLock,0) = 0 THEN
'true/1'
WHEN (t.isLock = 1) AND (clientID = 100) THEN
'true/1'
ELSE
'flase/0'
END AS result
FROM query q
LEFT JOIN table1 t
ON q.orderNO = T.orderNO

    orderNO result
----------- -------
100000004 true/1
100000001 true/1
100000002 true/1
100000005 flase/0
inghot 2014-11-14
  • 打赏
  • 举报
回复
哈哈,刚才钻死胡同里了,多谢 正确应该是:SELECT 0 FROM TB WHERE orderNO='orderNO'AND isLock=1 AND clientID<>'clientID'
發糞塗牆 2014-11-14
  • 打赏
  • 举报
回复
三个if判断
还在加载中灬 2014-11-14
  • 打赏
  • 举报
回复
SELECT 0 FROM TB WHERE orderNO='orderNO'AND isLock=1 AND clientID='clientID'
这个查询没有结果就是true/1,有结果就是false/0

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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