请教两个字段有in的sql问题

nullhue 2011-05-11 08:38:47
1)SELECT * FROM TABLE WHERE COL1 IN(1,2,3) AND COL2 IN(A,B)

2)
SELECT * FROM TABLE WHERE COL1 IN(1) AND COL2 IN(A)
UNION
SELECT * FROM TABLE WHERE COL1 IN(2) AND COL2 IN(A)
UNION
SELECT * FROM TABLE WHERE COL1 IN(2) AND COL2 IN(B)

1)和2)出来的结果是否一样,如不是1)应该如何写
...全文
697 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
newbie777 2011-05-13
  • 打赏
  • 举报
回复
这样写也行:
SELECT *
FROM TABLE
WHERE (COL1 = 1 AND COL2 = A)
OR (COL1 = 1 AND COL2 = B)
OR (COL1 = 2 AND COL2 = A)
OR (COL1 = 2 AND COL2 = B)
OR (COL1 = 3 AND COL2 = A)
OR (COL1 = 3 AND COL2 = B)

好像是自找罪受
newbie777 2011-05-13
  • 打赏
  • 举报
回复
lz应该着重理解"笛卡尔集"的概念
第一种写法已经很完美,何必要重写?如果等价的写法参照7楼.
oO寒枫Oo 2011-05-13
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 fredrickhu 的回复:]
结果不一样
第一种写法是6种结果
如果要写成第2种的话,需要将六种可能性全部UNION ALL
[/Quote]
UNION ALL的话会有重复的数据的
oO寒枫Oo 2011-05-13
  • 打赏
  • 举报
回复
把2补充完整 哈哈

SELECT * FROM TABLE WHERE COL1 IN(1) AND COL2 IN(A)
UNION
SELECT * FROM TABLE WHERE COL1 IN(1) AND COL2 IN(B)
UNION
SELECT * FROM TABLE WHERE COL1 IN(2) AND COL2 IN(A)
UNION
SELECT * FROM TABLE WHERE COL1 IN(2) AND COL2 IN(B)
UNION
SELECT * FROM TABLE WHERE COL1 IN(3) AND COL2 IN(A)
UNION
SELECT * FROM TABLE WHERE COL1 IN(3) AND COL2 IN(B)
yyanzh 2011-05-13
  • 打赏
  • 举报
回复
结果应该不一样的!SELECT * FROM TABLE WHERE COL1 IN(1,2,3) AND COL2 IN(A,B)
可能有六种查询结果的!2中只有三种!SELECT * FROM TABLE WHERE (COL1 = 1 AND COL2 = 'A') OR (COL1 =2 AND COL2 IN(A,B))
--小F-- 2011-05-12
  • 打赏
  • 举报
回复
结果不一样
第一种写法是6种结果
如果要写成第2种的话,需要将六种可能性全部UNION ALL
gogodiy 2011-05-12
  • 打赏
  • 举报
回复
请参照1楼写法。
hyde100 2011-05-11
  • 打赏
  • 举报
回复
结果不一样的
AcHerat 元老 2011-05-11
  • 打赏
  • 举报
回复

SELECT *
FROM TABLE
WHERE (COL1 = 1 AND COL2 = 'A') OR (COL1 =2 AND COL2 IN(A,B))
zy35147972122 2011-05-11
  • 打赏
  • 举报
回复
1)的结果会有6种情况,而2)只有3种,结果肯定不一样啊

2楼的写法可以

34,576

社区成员

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

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