sql多表联合查询

问题描述

现在有3个表 A、B、CA表字段有:user_id,timestamp ...B表字段有:user_id,timestamp ...C表字段有:user_id,timestamp ...A、B、C三个表的user_id字段有重复的值,现在我想要把A、B、C这三张表的所有user_id联合起来算出count(*),并且去除重复的值。请问sql语句要怎么写?

解决方案

select count(1) from (SELECT t1.user_id from t1union select t2.user_id from t2UNIONselect t3.user_id from t3) aunion本身就去除重复了,count(1)用于统计,使用常量能提高效率
解决方案二:
select count(user_id) from (select user_id from A union all select user_id from B union all select user_id from C) group by user_id顺带一提kjmmlzq19851226 的方法一定是错的,a表如果没有数据,b,c表都有数据,那它的方法是查不出数据的。
解决方案三:
需要分组。e.g.SELECT COUNT(1) FROM (SELECT 1 FROM A a, B b, C c WHERE a.user_id=b.user_id AND a.user_id=c.user_id AND b.user_id=c.user_id GROUP BY a.user_id);
解决方案四:
SELECT COUNT(*) from (SELECT user_Id from usera UNION SELECT user_Id from userb UNION SELECT user_Id from userc) as ttt;

时间: 2024-12-01 22:02:16

sql多表联合查询的相关文章

sql 多表联合查询

关于sql 多表联合查询方法很多,我们今天就来讲一下关于sql多表查询的用法与实例代码,一般会用到select  * from (select ) union 来操作. select 类型,sum(合计金额) from (select 商品名称,数量,日期,类型,合计金额 from 出库表 where 日期 > '2010-5-5 00:00:00' union select 商品名称,数量,日期,类型,合计金额 from 入库表 where 日期 > '2010-5-5 00:00:00'

sql多表联合查询二个查询实例

sql多表联合查询二个查询实例 先看常用的查询 两表结构不一样 select m.* , n.* from t1 m, t2 n where m.id = n.id and n.date = (select max(date) from t2 where id = n.id) select m.* , n.* from t1 m, t2 n where m.id = n.id and not exists (select 1 from t2 where id = n.id and date >

sql中怎样在多表联合查询后的表中进行增删改操作,新手求大神详细讲解

问题描述 sql中怎样在多表联合查询后的表中进行增删改操作,新手求大神详细讲解 我在C#的winform的DataGridView中显示联合查询的结果,下面就是4张表的联合查询的语句,我需要在DataGridView显示的表中做删除操作,只需要知道删除的sql语句就行,用存储过程也好,级联删除也好,希望详细,我已经在这个问题上困扰很久了,万分感谢! 解决方案 在做C#桌面程序时,我们通常会遇到删除dataGridview中选中的一和或都多行数据,在网上查了好多方法,有些只能删除dataGridv

sql server-SQLSERVER 结构相同表 联合查询 分页

问题描述 SQLSERVER 结构相同表 联合查询 分页 1C 两张表:HistoryOrders.Orders结构完全一样,每天3天将Orders中的数据导入到了HistoryOrders中.数据量挺大,平均一天的数据在10W以上. 需求:根据其中某一列(例如会员ID)Group,查询统计数据(总金额....),并且是任意时间段(这里可能就会跨两个表)的数据分页查询.问题:怎样查能实现而且效率高.怎样统计总量. 解决方案 简单的做法你这里就是两个表数据查询结果的union合集后再统计考虑His

数据库-sql两表联合计算求助~

问题描述 sql两表联合计算求助~ 表一表二如图~现在想写一条sql语句来通过某一人的工作证号,如张三的123,来查出他所有的称号代码也就是4.5.6:然后根据表二的称号代码来查出代码对应的"研究生支持人数"和"研究生支持年限",二者相乘得出一个数,然后将这一个人所有这样两两相乘得出来的数累加起来,得出一个最后结果: 比如我查询张三,他的最后结果就是:1*1+2*3+1*1=8:我查李四的最后结果就是:1*1+2*3+1*1+1*1=9: 大概就是这样,求问sql语

mysql-PHP MYSQL 两表联合查询问题

问题描述 PHP MYSQL 两表联合查询问题 现在有两个表,第一个201411,第二个user_list, 第一个是存放用户相关的数据,第二个是存放登录用户名和密码的信息. 他们有一个共有的字段:username, 现在要如何才能调用和显示在登陆了user_list的账号(username)的201411这张表里面的其他信息. 解决方案 SELECT T2.* FROM user_list T1 INNER JOIN 201411 T2 ON T1.username = T2.username

sql-SQL 三张表联合查询中间表有空字段的问题

问题描述 SQL 三张表联合查询中间表有空字段的问题 table1(id1).table2(id2id1no).table3(noname)select t3.name from table1 t1(nolock) inner join table2 t2(nolock)on t1.id1 = t2.id1inner join table3 t3(nolock)on t2.no = t3.no第2张表里面对应的no字段有可能为空,为空的时候就取不到name而不是取no为空的name字段 解决方案

sql-SQL 三张表联合查询其中表有空字段的问题

问题描述 SQL 三张表联合查询其中表有空字段的问题 table1(id1).table2(id2id1no).table3(noname) select t3.name from table1 t1(nolock) inner join table2 t2(nolock)on t1.id1 = t2.id1inner join table3 t3(nolock)on t2.no = t3.no 第2张表里面对应的no字段有可能为空,为空的时候name就为空,这个要怎么查询才不会有冗余,请指教

ThinkPHP多表联合查询的常用方法_php实例

ThinkPHP中关联查询(即多表联合查询)可以使用 table() 方法或和join方法,具体使用如下例所示: 1.原生查询示例: 复制代码 代码如下: $Model = new Model(); $sql = 'select a.id,a.title,b.content from think_test1 as a, think_test2 as b where a.id=b.id '.$map.' order by a.id '.$sort.' limit '.$p->firstRow.',