sql查询求解

来源:百度知道 编辑:UC知道 时间:2024/06/24 00:27:32
tabA,tabB

a中2字段 id,user
b中2字段 id,name

大概数据如下

tabA
id user
1 1
2 4
3 7
4 1,7
5 1,2,6

现在的情况,当 A表user 为单个值时

select * from tabA where user in (select id from tabB where name like '%王%')
查询正常。

当时当A的user内包含 1,2,3 之类时。
就会出错, 提示将 1,2,3转为int 时 出错。

想请各位朋友帮忙, 我怎么才能实现 上述查询结果。

为了各位能明确理解这里,详细解释。

是一个新闻系统, A表 为新闻表, B为 编辑人员表。

新闻表中的user 字段 用来存放, 编辑人员表B中的ID。

现在需要模糊查询 某一个编辑所添加的新闻。

用了上面的sql 就是不行。 烦请各位帮忙。

SELECT MAX(时间) FROM 表
GROUP BY 客户
ORDER BY 客户 时间 DESC

呵呵,这道题需要用到自定义函数

需要用函数拼合数据,单纯的Like和in解决不了问题
---
主要看你要什么结果,才好定义这个函数的功能

---
to jy02139326,项目需要有时候范式需要违背,不一定要完全遵循范式。

数据库的设计连第一范式都不符合,又怎么能用关系数据库的查询查出来呢??

最好把A表写成
id user
1 1
2 4
3 7
4 1
4 7
5 1
5 2
5 6

这样的话符合第一范式就好办了,如果ID为PK 可以再写一个FK表.

select * from tabA where to_char(user) in (select id from tabB where name like '%王%')

范式用来做什么?

把tabB表中的ID换成varchar类型就可以了。