-
Nov06
一道有意思的sql题
Posted in Oracle, 数据库管理, 758 views
-
itpub上一道有趣的问题
规则:
表A和表B,结构一致,有数据若干。
现找出B表中,B表与A表三个对应字段中有两个对应字段相等的记录。例如:
表A
COL1 COL2 COL3
1 10 100
2 20 200
3 30 300
4 40 400表B
COL1 COL2 COL3
1 20 1
2 20 222
1 102 111
3 30 300
9 40 400输出:
col1 col2 col3
2 20 222
3 30 300
9 40 400------------------------------------------------------------
解法:
1 SELECT b.* FROM t_b b,t_a a
WHERE
(CASE WHEN b.col1 = a.col1 THEN 1 ELSE 0 END )
+ (CASE WHEN b.col2 = a.col2 THEN 1 ELSE 0 END )
+ (CASE WHEN b.col3 = a.col3 THEN 1 ELSE 0 END ) >=22
SELECT B.* FROM t_B B, t_A A
WHERE DECODE(B.COL1, A.COL1, 1, 0)
+ DECODE(B.COL2, A.COL2, 1, 0)
+ DECODE(B.COL3, A.COL3, 1, 0) >= 2Related posts:

Leave a comment | Trackback 这篇文章还没有评论.