求一个比较难的sql语句

qq_38741240 2017-10-31 06:07:38
有下面A ,B,C三个表

A表
id,itemId,keyWords

b表
id,itemId,data

c表( c表table_from字段记录了数据来源对应关系,通过的是itemId做关联,如table_from为1代表的是a表,2代表了b表)
id,table_from,itemId

现在需求是 做链接查询,以c表为准做左链接(left join),c表的itemId要等于A表或者B表的itemId
如果c表的table_from字段为1,那么就是查询a表和c表,且c表的itemId等于a表的itemId.
如果c表的table_from字段为2,那么就是查询b表和c表,且c表的itemId等于b表的itemId
一共需要查询20条数据且只能用一条sql实现(数据库是mysql,没有外键等之类的关联,都是独立表)
...全文
574 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
cnaaa8 2018-01-04
  • 打赏
  • 举报
回复
select c.id, c.table_from, c.itemId, a.keyWords as kkk from c left join a on c.itemId=a.itemId where c.table_from=1 union select c.id, c.table_from, c.itemId, b.data as kkk from c left join b on c.itemId=b.itemId where c.table_from=2
hongmei85 2017-11-01
  • 打赏
  • 举报
回复
没验证过,试下 select c.id, c.table_from, c.itemId, a.keyWords as kkk from c left join a on c.itemId=a.itemId where c.table_from=1 union select c.id, c.table_from, c.itemId, b.data as kkk from c left join b on c.itemId=b.itemId where c.table_from=2
陶太郎 2017-11-01
  • 打赏
  • 举报
回复
引用 1 楼 hongmei85 的回复:
没验证过,试下 select c.id, c.table_from, c.itemId, a.keyWords as kkk from c left join a on c.itemId=a.itemId where c.table_from=1 union select c.id, c.table_from, c.itemId, b.data as kkk from c left join b on c.itemId=b.itemId where c.table_from=2
没毛病 我验证过了

20,359

社区成员

发帖
与我相关
我的任务
社区描述
“超文本预处理器”,是在服务器端执行的脚本语言,尤其适用于Web开发并可嵌入HTML中。PHP语法利用了C、Java和Perl,该语言的主要目标是允许web开发人员快速编写动态网页。
phpphpstorm 技术论坛(原bbs)
社区管理员
  • 开源资源社区
  • phpstory
  • xuzuning
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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