mysql SQL 多表查询最优问题

问题描述

mysql SQL 多表查询最优问题

有表 t(t_year,col), t1(t1_year,t1_month,col_1), t2(t2_year,t2_month,col_t2), t3(t3_year,t3_month,col_t3), 和目标表 T(T_year,T_month,col,col_1,col_2,col_3),
将t, t1, t2, t3的数据整合到 T 中,什么样的SQL最优?

解决方案

多个表join,然后设置on的条件判断年,月,日相等条件。

解决方案二:

你的問題對加入的條件並沒有寫清楚,
字段之間的對應不明

解决方案三:

select * from t1,t2,t3

解决方案四:

DECLARE v1 INT DEFAULT 1;
WHILE (v1 <13) DO
select distinct y,
case when m1 is not null then m1 when m2 is not null then m2 when m3 is not null then m3 end as m,
c,c1,c2,c3 from t
left join t1 on y=y1 and m1=v1
left join t2 on y=y2 and m2=v1
left join t3 on y=y3 and m3=v1
where y='2015';
END WHILE;

时间: 2024-09-14 00:12:38

mysql SQL 多表查询最优问题的相关文章

java me-关于mysql优化连表查询的问题

问题描述 关于mysql优化连表查询的问题 mysql中查询两张表中的数据,一张表的数据量大,一张数据量小,有一个id关联,但是这个id在两张表都不是主键,怎么 查才能速度快呢?sql大概在下面,数据a表10w条,b表几十条 select * from a a ,b b where a.c_id = b.c_id ORDER BY a.cid limit 1,20 大概要0.8秒,如果去掉排序只要3ms,试过用inner join ,但是有条件的情况下也很慢 解决方案 1.加索引 2.避免用se

sql多表查询语句该怎样写

问题描述 sql多表查询语句该怎样写 有两个表,表1中字段有姓名,编号,地址 表2中字段有省,地址.例如表1数据如下(张三,001,济南)(李四,002,青岛)(王五,003,威海)(王伟,004,石家庄)(李玲,005,唐山)(王宇,006,秦皇岛)表2数据如下(山东省,济南)(山东省,青岛)(山东省,威海)(河北省,石家庄)(河北省,唐山)(河北省,秦皇岛)如果搜索河北省的用户信息请问该怎样写sql语句 解决方案 select * from t1 where 地址 in (select 地址

数据库-关于原生mysql语句多表查询更新字段问题 求大神解答

问题描述 关于原生mysql语句多表查询更新字段问题 求大神解答 如题:a表user_id school_id1233 220132346 220172344 234452247 22017... ... b表user_id term2346 12346 12346 22247 21233 1... ... 如上两张表:根据a表中的school_id=22017 得到它的user_id 然后根据此user_id得到b表中的term 并把term=1的变为term=2,把term=2的变为term

mysql-Hibernate 原生sql多表查询在Linux服务器上查询不到数据

问题描述 Hibernate 原生sql多表查询在Linux服务器上查询不到数据 String sql = "SELECT Area.* FROM area AS Area,district AS d WHERE Area.districtid=d.districtid AND Area.areaname= '" + areaname + "' AND d.districtname='" + cityname + "'"; @SuppressWa

sql多表查询图形化界面查询返回结果与程序端hibernate查询结果不符。

问题描述 sql多表查询图形化界面查询返回结果与程序端hibernate查询结果不符. 我使用多表查询,其中一个表与令一个表字段名相同,在hibernate界面后一个与前一个字段名相同的字段输出结果也与前一个字段名相同.前问在不改字段名的情况下有什么办法解决?(以下d.name与p.name输出结果一样,显然d.name输出结果是错的) select p.id,p.name,p.post_coefficient,d.name ,postType,a.areaName,p.postHour,p.s

MySQL的多表查询(笛卡尔积原理)

原文:MySQL的多表查询(笛卡尔积原理) 先确定数据要用到哪些表. 将多个表先通过笛卡尔积变成一个表. 然后去除不符合逻辑的数据(根据两个表的关系去掉). 最后当做是一个虚拟表一样来加上条件即可.   注意:列名最好使用表别名来区别.     笛卡尔积         Demo:   左,右连接,内,外连接 l             内连接: 要点:返回的是所有匹配的记录. 2.         select * from a,b where a.x = b.x               

sql多表查询之一:Where 和 On的秘密

原文 sql多表查询之一:Where 和 On的秘密 对于还在SQL初级阶段的朋友来说,sql多表查询问题是一个比较有趣也容易出错的技术.什么时候会用到sql多表查询呢?是在两张或两张以上表单中通过某几个字段进行互联管理的时候,这就不得不说说sql多表查询中Where 和 On的秘密.   在了解sql多表查询中Where 和 On的秘密之前,让我们先来温习一下连接基础吧 按列a把两表连接,请问各种连接方式的结果的结果? 语法呢? 左    select * from @a Aa left jo

SQL多表查询详解

本教程为大家介绍SQL中的多表查询,下面我们来看看具体实例吧. 新建两张表: 表1:student 截图如下: 表2:course 截图如下: (此时这样建表只是为了演示连接SQL语句,当然实际开发中我们不会这样建表,实际开发中这两个表会有自己不同的主键.) 一.外连接 外连接可分为:左连接.右连接.完全外连接. 1.左连接 left join 或 left outer join SQL语句:select * from student left join course on student.ID

sql 多表查询的语句集合

今天我们来讲一下关于如何多表查询的sql语句,先是最常见也是最突然的效绿也不怎么样的多表查询方法一 select * from A join B ON A.uid=B.uid join C ON C.uid=A.uid where uid=1 二.四个表查询 select * form A,B,C,D where A.uid=B.uid and B.uid=C.uid and C.uid=D.uid where uid=1 三.用别名查询 select * from table1 as a,ta