求sql语句写法
a表
aid (int型)
34
35
36
b表
bid aid(varchar2(50))
1 34
2 34,35
3 36
想求出b表的aid字段对应a表的aid,已知b表中每条aid只对应a表中的一条记录,如下sql会报无效数字的错误:
select b.*, (select distinct aid from a where a.aid in (b.aid)) from b
------解决方案-------------------- 引用: a表
aid (int型)
34
35
36
b表
bid aid(varchar2(50))
1 34
2 34,35
3 36
想求出b表的aid字段对应a表的aid,已知b表中每条aid只对应a表中的一条记录,如下sql会报无效数字的错误:
select b.*, (select distinct aid from a where a.aid in (b.aid)) from b
无效数字是因为,你a表定义的是数字,当你in b表的时候,默认需要将b.aid转换为数字,所以报错,因为34,35无法转换为数字。
如果你想用子查询的话最好使用like..
SELECT b.*,(SELECT a.aid from a where b.aid LIKE '%' ------解决方案-------------------- a.aid ------解决方案-------------------- '%' AND ROWNUM=1) FROM b
或者
SELECT b.*,(SELECT wmsys.wm_concat(a.aid) from a where b.aid LIKE '%' ------解决方案-------------------- a.aid ------解决方案-------------------- '%' ) FROM b