MYSQL 两个表联合查询 比较绕

表一
ID 基本信息 详细信息
1 张三 张三
2 李四 李四
3 王五 王五
4 老六 老六
表二
ID 详情 修改日期
1 买了个鸡蛋 20160101
1 住院了 20160102
2 死了 20160101
2 又活了 20160102

我想要的结果是查询出ID为1的最新状态,然后结合表一返回一条结果
ID 基本信息 详细信息 详情 修改日期
1 张三 张三 住院了 20160102

我的原始表中表一是基本信息,表二的信息经常更新的(同时用在历史状态搜索
),我想要一条语言搜出对应ID的最新状态,如果放在一个表里面的话,表一会变得很大

非常感谢!

补充一下
表一是主表 表一id为主键 表二的id是外键 表二另外有一个自己的主键

0

8个回答

我的整个SQL语句是这样的:
select i.id,i.basic_info,i.detailed_info,s.detailes,s.date from people_info i,people_status s where i.id=s.id and i.id=1 and s.date=(select date from people_status where id=1 order by date desc limit 1);
下面稍微分析一下:
select i.id,i.basic_info,i.detailed_info,s.detailes,s.date from XXX //这个很好理解,搜索显示i表中的3个字段和s表中的2个字段
from people_info i,people_status s //给两个表取别名,一个叫i一个叫s
where i.id=s.id and i.id=1 //两表用id值就行连接,并且id=1
and s.date=(select date from people_status where id=1 order by date desc limit 1);//最后一个条件就是id=1的人取出它最新的日期
图片说明

1

两表没关联,你是要以谁为主表呢?

0
u011371270
漆黑天使复活 表一是主表 表一id为主键 表二的id是外键 表二另外有一个自己的主键
3 年多之前 回复

你需要定义两个表之间的关系,比如有一个公共的字段。

0

你直接from t1,t2 where t1.id =? and t2.id=? 这样就行

0
qq_31221931
qq_31221931 你要确保t1必须id为唯一,t2也id为唯一
3 年多之前 回复

着用该是多对多吧?这样的话得加一个中间表!

0

试试这个

select a.*,b.详情,b.修改日期 from 表一 a
LEFT JOIN
(
/* 这样就得到了最新状态的数据 */
select * from 表二 inner join (
SELECT max(修改日期) FROM 表二 group by ID ;
)
) b on a.id = b.id

0

select a.*,b.详情,b.修改日期 from 表一 a
LEFT JOIN
(
/* 这样就得到了最新状态的数据 */
select * from 表二 inner join (
SELECT max(修改日期) FROM 表二 group by ID ;
) on 修改日期 = 修改日期
) b on a.id = b.id

0

哥哥你的数据就是个笑话,等我笑完再来

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
MySQL之两个表联合查询
在数据库中,有时我们需要的信息可能不在同一个表中,而根据两个表中的公共字段,我们就可以从中获取我们需要的信息。 注意:联合查询必须有公共字段 SQL语句示例: SELECT * FROM table1,table2 WHERE table1.name=table2.name   如果我们想将查询结果生成新表,使用CREATE TABELE语句 SQL: CEEATE TABLE ...
mysql两表联合查询的四种情况
一般来说,我们为了得到更完整的结果,我们需要从两个或更多的表中获取结果,我一般都是用select xxx,xxx from 表1,表2 where 表1.xxx=表2.xxx,我们一般都是进行的是这般的操作,其实mysql中还有一种操作,那就是join的操作,例如底下有两个表: 请看 "Persons" 表: Id_P LastName FirstName Add
该死的PHP语言中MySQL的两表联合查询
需求:有两个表,A表存储临时数据,B表存储永久数据,AB表有相同的id字段,为了区别A的叫gid,B的就叫id。id都是唯一的。需要按照A表id的顺序读取A和B的所有数据。查询语句:$sqlt="select * FROM A LEFT JOIN B ON A.gid=B.id ORDER BY gid DESC ";方法:left join:联合两个表:条件是id相同,顺序按照A表排列...
MySQL----union联合查询出二个表内容
合并查询的字段数量要一样,而且对应的字段类型要一样 select id,username from member union select student_id,sdudent_name from student2; 有排序,limit一类的子句,应该将联合的查询分别用括号括起来 (select id,username from member order by username desc l...
mysql两个字段相同的表联合查询(union的使用)
在维护使用的多个表的时候遇到了需要跨表统计信息的需求,经查询可以使用union和union all语句实现 union和union all都是组合多个表的内容然后作为一个表输出。 他们的不同点是: union会去掉重复的行,而union all会全部保留 使用他们时需要注意的是: 所有查询中的列数和列的顺序必须相同(列表内容可以包括:列名、算术表达式、聚合函数等) 数据类型必须兼容(结
史上最简单MySQL教程详解(基础篇)之多表联合查询
常用术语 表连接的方式 数据准备 student表 college表 内连接 外连接 左外连接 右外连接 注意事项: 自连接 子查询 在上篇文章史上最简单MySQL教程详解(基础篇)之数据库设计范式及应用举例我们介绍过,在关系型数据库中,我们通常为了减少数据的冗余量将对数据表进行规范,将数据分割到不同的表中。当我们需要将这些数据重新合成一条时,就需要用到我们介绍来将...
mysql 两表联合查询数据多了很慢
1、不要直接去关联表名查询,在关联表外加个select查询。 select * from tab1 a inner join (select * from tab2) b on a.fld1=b.fld2  2、主表有条件先select一遍主表,关联表有条件最好放最后where后(注意:条件放最后和放关联表中查询有时是不一样的) select * from (select * from ta...
java Mysql的跨服务器不同表结构的联合查询,两不同服务器上的不同表查询
java Mysql的跨服务器不同表结构的联合查询,两不同服务器上的不同表查询
mysql查询语句 和 多表关联查询 以及 子查询
mysql(三):mysql查询语句 和 多表关联查询 以及 子查询 1.查询一张表:     select * from 表名; 2.查询指定字段:select 字段1,字段2,字段3….from 表名; 3.where条件查询:select 字段1,字段2,字段3 frome 表名 where 条件表达式;例:select * from t_
mysql支持多个库中不同表的关联查询
mysql支持多个库中不同表的关联查询,你可以随便链接一个数据库 然后,sql语句为 select * from db1.table1 left join db2.table2 on db1.table1.id = db2.table2.id 只要用数据库名加上"."就能调用相应数据库的数据表了. 数据库名.表名...
Node.js的mysql执行多表联合查询
数据库(test)中的表结构(admin、user) //执行多表结合查询 var mysql = require('mysql'); var connection = mysql.createConnection({ host : 'localhost', port : 3306, database : 'test', user : 'root', password
MySQL两表联查创建索引
创建数据库的索引,可以选择单列索引,也可以选择创建组合索引。  遇到如下这种情况,用户表(user)与部门表(dept)通过部门用户关联表(deptuser)连接起来,如下图所示:表间关系  问题就是,在这个关联表中该如何建立索引呢?针对该表,有如下四种选择:针对于user_uuid建立单列索引idx_user针对于user_dept建立单列索引idx_dept建立组合索引idx_user_dep...
mysql 两个表 字段赋值
把 B表的 uniond 值 填到 A表的 username 中去   UPDATE  member A, `thirdusers` B SET A.username = B.unionid WHERE A.userid = B.userid  
mysql下的多一表多结果的联合查询外加求和
今天在开发过程中,碰到一难题,通过代码可以简单解决,但是考虑到量多时的效率,想通过sql解决下: 题目如何: 有两张表,通过用户id关联, table1: CREATE TABLE `tbusiness_evaluation_report` (   `id` int(11) NOT NULL AUTO_INCREMENT,   `userid` int(11) DEFAULT NULL
解决 mysql多表联合查询时出现的分页问题
mysql一对多 多对多 分页问题 使用子查询方式 SELECT ft.id, ft.partner_id AS partnerId, ft.code , ft.end_update_date AS endUpdateDate, ft.name , ft.type , ft.a...
mysql两表联合查询,一对多
t_user表如下 cj表如下: 要获得的查询结果: 解决办法: select cjc.uid,u.uname,cjc.数学,cjc.英语,cjc.语文,u.type from   (select uid,max(case subj when '数学' then score else 0 end) 数学,  max(case subj when '语文' t
数据库(4)多表联合查询
二、多表联合查询  1、合并结果集  : 把两个select语句的查询结果合并到一起           union 合并结果集并且去除重复数据。           union all合并结果集并且不去除重复数据  要求:被合并的两个结果集,列数和列类型必须相同 2、连接查询  :  就是求多个表的乘积 例如   a表连接b 表那么查询结果就是a表*b表 连接查询产生 笛卡尔积...
mysql两表联合查询并且将查询结果创建新表存进去
create table jieguo SELECT freebuf.title,freebuf.pub_time,freebuf.pub_week,freebuf.scan,freebuf.category,freebuf.summary,author.Author FROM freebuf INNER JOIN author ON freebuf.title = author.title;
几个表的联合查询练习
Student(S#,Sname,Sage,Ssex) 学生表 Course(C#,Cname,T#) 课程表 StudentScore(S#,C#,score) 成绩表 teacher(T#,Tname) 教师表 1.查询"001"课程比"002"课程成绩高的所有学生的 学号 2.查询平均成绩大于60分的同学的学号和平均成绩 (group by 的作用)
MySQL的联合查询和子查询
MySQL的联合查询和子查询 @ sunRainAmazing 联合查询 联合查询 将多次查询(多条select语句),在记录上进行拼接(字段不会增加) 基本语法 多条select语句构成, 每一条select语句获取的字段必须严格一致(与字段类型无关) select 语句1 union [union 选项]
mysql多表联合查询并统计
推广地点表promotion_addr字段:name,id电话报竣表unicom_record字段:date, sheet_id(关联sheet表id)报单表sheet字段:id,promotion_addr_id(关联promotion_addr表id)要求统计某个月已报竣各推广地点的推广个数; SELECTp.name, count(*)FROMunicom_record
SQL语句——多表联合查询
1、合并结果集(union/union all):被合并的结果集必须列数与列类型完全相同。    去重合并:SELECT * FROM g UNION SELECT * FROM h;    不去重:SELECT * FROM g UNION ALL SELECT * FROM h;2、连接查询(crossjoin):多表的乘积。    内连接:inner(可省略) join on隐式:SELEC...
Yii2实现跨mysql数据库关联查询排序功能
背景:在一个mysql服务器上(注意:两个数据库必须在同一个mysql服务器上)有两个数据库: memory (存储常规数据表) 中有一个 user 表(记录用户信息) memory_stat (存储统计数据表) 中有一个 user_stat (记录用户统计数据) 现在在 user 表生成的 GridView 列表中展示 user_stat 中的统计数据 只需要在Us
MySQL优化系列(二)--查找优化(2)(外连接、多表联合查询以及查询注意点)
继续这一系列,上篇的简单查询优化并没讲完,第二点还有查询注意点以及多表查询优化呢!! 文章结构:(1)多表查询步步优化;(2)查询编写的注意点。 主要是内连接,外连接,交叉连接的详解(配图)。以及罗列出,在项目中,一些写sql的注意点。
MySQL数据高级查询之连接查询、联合查询、子查询
大圣网络 2017-01-31 09:19 连接查询 连接查询: 将多张表(>=2)进行记录的连接(按照某个指定的条件进行数据拼接)。 连接查询的意义: 在用户查看数据的时候,需要显示的数据来自多张表. 连接查询: join, 使用方式: 左表 join 右表;左表: 在join关键字左边的表;右表: 在join关键字右边的表 连接查询分类:SQL中将连接查询分成
MYSQL 中SUM函数和关联查询
写在前面:昨晚迷迷糊糊的,做积分求和时候,被困住了,本来的需求是有两张表user用户表和credit用户积分表,要统计出用户的总积分并按照积分和递减排序,其中的字段写在下面: user表中 id username password_hash 1 张三 2yu2yulj5sqQDNinP9h9blKDY8y2HKZXxXA… 2 王五 2y2y13$P/rJ1PoT
Sql语句优化-查询两表不同行NOT IN、NOT EXISTS、连接查询Left Join
在实际开发中,我们往往需要比较两个或多个表数据的差别,比较那些数据相同那些数据不相同,这时我们有一下三种方法可以使用:1. IN或NOT IN,2. EXIST或NOTEXIST,3.使用连接查询(inner join,left join 或者 right join)。 看下面的数据,我们准备选择出在depart_info中的pid在user_info中不存在的depart_信息。 有表1
mysql中的多表联合并且去重排序
同一数据库中au_log_开头的表(这些表中每一条数据表示异常),并且这些表中如果包含ipsrc和ipdst、portsrc和portdst字段的,则将这些4元组去重后显示出来,并按照某个字段排序$result = $db->query(" (SELECT ipsrc,ipdst,portsrc,portdst FROM au_log_baseline where n...
mysql的子查询联合与in的效率
最近的产品测试发现一个问题,当并发数量小于10时,响应时间可以维持在100毫秒以内。但是当并发数到达30个时,响应时间就超过1秒。这太不能接受了,要求是通过1秒中并发100个。 经过检测发现,时间主要是耗在其中的一个存储过程中。把存储过程的语句一条一条的过一遍也没有发现明显的不合理。因为mysql本身不能提供毫秒级别的时间,google了一个mysql的能提供毫秒的时间函数,再做测试,做了一个定...
My sql 3-4个表 联合查询
CREATE TEMPORARY TABLE/*查询张三发布的所有出租房屋信息,并显示房屋分布的街道和区县结果数据来源于出租房屋信息表、客户信息表、区县信息表、街道信息表使用连接查询和子查询两种方式关联多表数据实现*/SELECT`dName`,`sName`,h.*FROM `hos_house` AS hINNER JOIN `sys_user` AS u ON u.UID=h.UIDINNE...
分析比较多表查询中的IN与JOIN
IN 是子查询的关键字,JOIN 是连接的关键字,项目开发中经常会使用到多表查询,而子查询与连接正是实现多表查询的重要途径。那两者的实质有什么区别?IN与JOIN谁更好?下面就来分析与比较。现在有test1与test2两张表,都没有任何像主键,外键那样的约束,且只有一个字段。两张表是非相关的。现在使用IN关键字实现子查询,test2作为子查询表(外部表):查看执行计划:使用JOIN关键字实现连接,同
MySQL_多表查询
笛卡尔积:没有连接条件,通过笛卡尔积返回的结果中,字段是两个表的和,记录数是两个表记录数的积。   内连接查询(Inner Join) 内连接就是在表关系的笛卡尔积数据记录中,保留表关系中所有匹配的数据记录,舍弃不匹 配的数据记录。按照匹配的条件可以分为自然连接、等值连接和不等连接。     通过“inner join…on”来实现。按照匹配情况:内连接查询可以分为等值连接和不等连接两大类...
THINKPHP 提供数据表联合查询的简单方法
ThinkPHP 数据库视图模型 注意:本文中的视图,是指数据库视图模型,而非 ThinkPHP 中的 View 视图类实现。 数据库视图是指从一个或几个基本表中根据用户需要,提取出需要的数据列而做成一个虚表。这样就不必根据 a 表数据再去查询 b 表,c 表... 等有关系的表而方便的一次性将数据查询出来。 视图在有些数据库下面并不被支持,ThinkPHP 模拟实现了数据库的视
mysql中多表不关联查询
大家在使用mysql查询时正常是直接一个表的查询,要不然也就是多表的关联查询,使用到了左联结(left join)、右联结(right join)、内联结(inner join)、外联结(outer join)。这种都是两个表之间有一定关联,也就是我们常常说的有一个外键对应关系,可以使用到 a.id = b.aId这种语句去写的关系了。这种是大家常常使用的,可是有时候我们会需要去同时查询两个或者是
mysql两个表联合查询
[img=https://img-bbs.csdn.net/upload/201407/29/1406606482_317314.jpg][/img]rnrn我有两个表A和B,如上图。rn我希望现实表A中所有的link_name,并按着表B中user_id=1对应的Link_click_times降序。另外,如果表A中的记录不在表B中,那么就直接显示出来。rn最后显示的结果是:凤凰 新浪 百度 网易 腾讯 搜狐rnrn我自己只会把在表B中的记录显示出来,如下:rnSELECT link_name FROM `A` , `B` WHERE `A`.`link_id` = `B`.`link_id` AND `B`.`user_id` =1 ORDER BY `B`.`link_click_times` DESCrn但不知道该如何把剩下的链接也显示出来,求大神帮忙指导。
ThinkPHP3.2.3之多表联合查询
开发过程中,我们总会遇到各式各样的问题,不要着急,总会找到解决办法的,耐心的去找寻! ——前言 用惯了单表查询,今天需要查询...
关联数据库表多表联合查询
insert into employee (id,position,xueli,emplyee_name) values(1,1,4,'杨忠宇'); 就是说这个员工  是高中学历  职位是项目经理 怎样才能把他的个人信息查找出来的? select   a.emplyee_name,b.item_value,c.item_value from
MySQL基础(三)多表查询(各种join连接详解)
Mysql 多表查询详解 一.前言  二.示例 三.注意事项 一.前言  上篇讲到Mysql中关键字执行的顺序,只涉及了一张表;实际应用大部分情况下,查询语句都会涉及到多张表格 : 1.1 多表连接有哪些分类? 1.2 针对这些分类有哪些连接方法? 1.3 这些连接方法分别作用于哪些应用场景? 这篇针对这三个点通过实例来讲述,目的是穷尽所有的场
mysql 单表多次查询和多表联合查询,哪个效率高
引自高性能MySQL:
MySQL:比较两个数据表不同部分
三种方法: 在t2表而不在t1表的数据 1、SELECT * FROM t2 WHERE id NOT IN (SELECT id FROM t1); 2、SELECT * FROM t2 WHERE NOT EXISTS(SELECT * FROM t1 WHERE t1.id=t2.id); 3、SELECT t2.* FROM t2 LEFT JOIN t1 ON t2.id=t1....
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 学习java思路绕不过来 业内的大数据培训比较