SQL检索多个字段匹配一个值

table1中有一个字段为code,table2中有50个字段为code和与之对应的50个值。现在具体table1中的code和table2中的50个code中的哪个对应... table1中有一个字段为code,table2中有50个字段为code和与之对应的50个值。
现在具体table1中的code和table2中的50个code中的哪个对应不确定,但一定有一个一样的,要找出这个一样的code所对应的哪个值。
先假定两张表都只有一条记录,因为主键上可以关联出来。
不要说写50个case when,我会疯掉的!
对了,我用的数据库是SuperStream,我也没用过这个东西,各位可以先以Oracle为例,解答一下我的问题。
例如:
table1:
pk code
1 123
table2:
pk code1 code2 code3。。。code50 num1 num2 num3 。。。num50
1 20 21 123 2 15 23 90 1
那么需要取得的table2中的code3所对应的num3的值,也就是90

还有一点,我虽然不是高手,但也不是小白,这样的功能我是可以实现的,我来这里问,是希望找到高效简洁的实现方式,而不是讨论如何实现。
展开
 我来答
ubai_2009
2012-11-21 · TA获得超过631个赞
知道小有建树答主
回答量:366
采纳率:66%
帮助的人:164万
展开全部
根据你的描述和需求,我建议你将Table2先进行一下拆分,将其做一下行列转换处理。步骤如下:
1、创建一个临时表,表包含两列,即Code和Num,属性同Table2的Code*和Num*列
2、将Table2的数据转移到该临时表中,规则如下:
INSERT INTO TMP_TABLE2
(CODE, NUM)
SELECT CODE1, NUM1
FROM TABLE2
UNION ALL
SELECT CODE2, NUM2
FROM TABLE2
UNION ALL
SELECT CODE3, NUM3
FROM TABLE2
...
UNION ALL
SELECT CODE50, NUM50 FROM TABLE2
3、使用临时表和Table1进行查询
SELECT A.NUM FROM TMP_TABLE2 A, TABLE1 B WHERE B.CODE = A.CODE
这个操作的唯一工作量就是将上述第二部语句中省略的4到49号列补齐即可
更多追问追答
追问
这确实是个方法,不过我要检索的不只一个code,table1和table2是可以一一对应,但table1本身就有很多条数据,这样做的话,还不如用case when更简单些。
追答
只要你的Table2的列数是固定的,你用我的方法只需要写第三步中的那个SQL就可以解决问题了,跟数据的记录条数没有关系,无论是1条还是任意多条都可以。
FM网络
2012-11-21 · TA获得超过825个赞
知道小有建树答主
回答量:1130
采纳率:0%
帮助的人:976万
展开全部
  1. 构造一个SQL语句即可

  2. set a= select code from table1

  3. set b='select code' +a +' from table2'

  4. exec b

  5.  

更多追问追答
追问
看不懂,能否写出完整的?这是存储过程么?
相同的是table2里的某个code字段的内容,而不是名字。
追答
是存储过程

相同的是table2里的某个code字段的内容,而不是名字。就更简单了。

直接 :

select code1=a or code2=a or code3=a or ........ from table2

如果你连这个都不愿意写,建议你不要做程序了,哈哈。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
匿名用户
2012-11-22
展开全部
用动态sql吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式