2 mjc102030 mjc102030 于 2016.02.16 14:19 提问

一条SQL的写法,菜鸟提问

式样要求从A表里取出所有项目,并且从B,C,D,E 4张表里取出和A表的nodeid相同的device这个字段。

我的想法是用t1 left join (select nodeid ,device from t2 union select nodeid ,device from t3 union select nodeid ,device from t4 union select nodeid ,device from t5) t6 on t1.nodeid = t6.nodeid

这样可以试想需求么,另外性能是不是最优的呢

4个回答

bdmh
bdmh   Ds   Rxr 2016.02.16 14:28

直接连续几个inner join就行了
select * from A inner join B on B.id=A.id inner join C on C.id=A.id inner join D on D.id=A.id

mjc102030
mjc102030 就是B,C,D,E表都是专门管理device的表,A里的nodeid一定跟这4张表里的nodeid有对应的,我要怎么查询A表内容的同时从这4张表里查询出nodeid对应的device整体作为结果集呢
2 年多之前 回复
mjc102030
mjc102030 那查询内容那块怎么确定是从B,C,D,E哪个表里取出的device呢
2 年多之前 回复
u011067688
u011067688   2016.02.16 15:13

SELECT
A.*, B.DEVICE, C.DEVICE, D.DEVICE, E.DEVICE
FROM A
LEFT JOIN B ON A.NODEID=B.NODEID
LEFT JOIN C ON A.NODEID=C.NODEID
LEFT JOIN D ON A.NODEID=D.NODEID
LEFT JOIN E ON A.NODEID=E.NODEID

mjc102030
mjc102030 回复咚咚swwadaw: 是bcde表union么
2 年多之前 回复
u011067688
u011067688 把BCDE表整合成一个表,另外添加一个字段区分不同设备,就好了
2 年多之前 回复
u011067688
u011067688 回复取名字好难: 最好把BCDE表整合成一个表,什么都解决了
2 年多之前 回复
mjc102030
mjc102030 不不不,你理解错了,最后显示的device是B,C,D,E表某一个里边的,就是B,C,D,E表是不同的device管理表,一个nodeid在这4张表里,只存在一条对应数据
2 年多之前 回复
u010717662
u010717662   2016.02.16 15:29

最好直接都用left join 少用子查询

mjc102030
mjc102030 可能是我对表结构没有表达清楚....就是B,C,D,E4张表是不同设备的管理表,A表里边的nodeid在这4张表里只存在一条对应的device数据,,我想要的是结果集里,A表的nodeid有一个device,不管是从哪个表取出来的,都用left join的话,没有办法取得对应的device的吧
2 年多之前 回复
Mr_dsw
Mr_dsw   Ds   Rxr 2016.02.16 22:11

使用连表查询,比较四个表中的字段

mjc102030
mjc102030 回复Mr_dsw: 我问的想法是bcde表全部union,就像在问题里说的一样,可以么
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!
其他相关推荐
存储过程--之菜鸟教程
 ①为什么要使用存储过程?因为它比SQL语句执行快.②存储过程是什么?把一堆SQL语句罗在一起,还可以根据条件执行不通SQL语句.(AX写作本文时观点)③来一个最简单的存储过程CREATE PROCEDURE dbo.testProcedure_AXASselect userID from USERS order by userid desc注:dbo.testProcedure_
菜鸟提问
请问下各位大佬,我的wampsever安装成功了,但是打开localhost的时候出现如下问题该如何解决呢
SQL Server-菜鸟入门
先前在图书馆里借了几本专门将SQL Server的书,翻完之后,大概讲的都一样。但是,唯一让我觉得遗憾的地方就是没有跟着一起做下来。让我明白了2个道理:1、看书的道理:记是记不住的。2、纸上得来终觉浅,得知此事要躬行。   就此,我就自己的理解,画了一张思维导图。     仅仅是个人理解而已,希望听听大家的意见。有很多的内容都省略了,太多太繁复就会给人的感觉很累,个人认为:从简单常用
菜鸟教程 sql教程
收录 菜鸟教程的 sql教程
【MySQL】删除重复记录保留一条的高性能DELETE写法
周中遇到一个情况就是一张表出现了很多重复记录,需要删除掉这些重复记录只保留一条,因为有自增长的主键,就决定保留PK最小的那一条吧。具体操作过程记录如下。      建一张示例表并插些数据看看吧。          mysql> CREATE TABLE `visitor_province_yn` (           ->   `id` INT(11) NOT NULL AUTO_
SQL语句 菜鸟入门
为了大家更容易理解我举出的SQL语句,本文假定已经建立了一个学生成绩管理数据库,全文均以学生成绩的管理为例来描述。  1.在查询结果中显示列名:  a.用as关键字:select name as 姓名 from students order by age  b.直接表示:select name 姓名 from students order by age  2.精确查找:  a.用in限定范
求一条聚合sql的写法
有一张表结构如下: -------------------    ID    |   日期 -------------------    2095  |   2011 -------------------    2095  |   (null) ---------
Hive菜鸟笔记-第1课-Hive基本sql查询操作
最近,在用到Hive,之前做过一段时间的hive,但是隔了段时间,又生疏了,所以特此在这里对hive常用的查询操纵做一个总结: 未完,待续。。。 我是Monica同学,欢迎和大家一起学习,一起进步~
常用的SQL语句,通用性很强。
常用的SQL语句写法,通用性很强。 常用的SQL语句写法,通用性很强 常用的SQL语句写法,通用性很强
jQuery 简单的图片轮播特效
加了很多技术群,前端的,程序的,运维的等等。。。 经常有入门菜鸟问 图片轮播怎么实现。 我总是很无奈的说,这个百度上一搜一大堆视频教程,为毛不看看呢? 后来有人竟然说看不懂。我也是醉了。 于是就自己花了 5分钟。写了一个demo 很简单,甚至可以更精简。 $(function(){ var this_num = 0 ; // 当前下标 var