SQL怎么连接查询2个表?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SQL怎么连接查询2个表?相关的知识,希望对你有一定的参考价值。
参考技术A使用where语句进行查询,如:
select Emp.E_Id,Company.C_OraName from Emp,Company where Companey.C_Id=Emp.C_Id
但是往往会碰到比较复杂的语句,这时候使用where就不太合适了,其实SQL可以用较为直接的形式进行连接操作,可以在From子句中以直接的形式指出:
select top 10 E_Id,E_Name,C_Name
from
Emp join Companey on Companey.C_Id=Emp.C_Id
where
E_Id not in (select top 20 E_Id from Emp order by E_Id asc)
order by E_Id asc
//查询表Emp中第21到第30条数据以升序排列,其中C_Name来自于另一个表
扩展资料:
SQL查询语句
1、获取当前数据库中的所有用户表select Name from sysobjects where xtype='u' and status>=0
2、获取某一个表的所有字段select name from syscolumns where id=object_id('表名')select name from syscolumns where id in (select id from sysobjects where type = 'u' and name = '表名')
3、查看与某一个表相关的视图、存储过程、函数select a.* from sysobjects a, syscomments b where a.id = b.id and b.text like '%表名%'
4、查看当前数据库中所有存储过程select name as 存储过程名称 from sysobjects where xtype='P'
5、查询用户创建的所有数据库select * from master..sysdatabases D where sid not in(select sid from master..syslogins where name='sa')
或者select dbid, name AS DB_NAME from master..sysdatabases where sid <> 0x01
6、查询某一个表的字段和数据类型select column_name,data_type from information_schema.columnswhere table_name = '表名'
使用 1 个 SQL 查询连接 3 个表,并找到为每个客户群产生最多收入的产品类别
【中文标题】使用 1 个 SQL 查询连接 3 个表,并找到为每个客户群产生最多收入的产品类别【英文标题】:Use 1 SQL query to join 3 tables and find the category of products that generates the most revenue for each customer segment 【发布时间】:2021-07-14 22:57:46 【问题描述】:我正在使用 SQLite3 进行以下查询。
我有一个名为“产品”的表,如下所示:
我有一个名为“事务”的表,如下所示:
我有一个名为“segments”的表格,如下所示:
对于每个活跃的细分,我想找到产生最高收入的类别。
我认为我知道如何在 3 个不同的查询中做到这一点。
create table table1 as
SELECT s.seg_name, p.category, t.item_qty * t.item_price as revenue
from segments s
JOIN
transactions t
on s.cust_id = t.cust_id
JOIN products p
on p.prod_id = t.prod_id
where s.active_flag = 'Y'
order by s.seg_name, p.category
;
create table table2 as
select seg_name, category, sum(revenue) as revenue
from table1
group by seg_name, category;
select seg_name, category, max(revenue) as revenue
from table2
group by seg_name;
如何在 1 个查询中做到这一点?
【问题讨论】:
【参考方案1】:这是一种方法:
select seg_name,category,revenue
from
(
SELECT
s.seg_name,
p.category,
sum(t.item_qty * t.item_price) as revenue,
rank() over (partition by seg_name order by sum(t.item_qty * t.item_price) desc) rn
from
segments s
JOIN transactions t on s.cust_id = t.cust_id
JOIN products p on p.prod_id = t.prod_id
where
s.active_flag = 'Y'
group by seg_name, p.category
) t
where rn = 1
【讨论】:
这行得通!但是,如何在最终输出中省略排名列(rn)的显示? @Iterator516 是的,别名错误,还用您用于记录的 dbms 标记您的问题 抱歉 - 我不知道我使用的是什么 DBMS。有人只是将 .db 文件发送给我。我将它上传到sqliteonline.com,并使用该接口运行 SQL。以上是关于SQL怎么连接查询2个表?的主要内容,如果未能解决你的问题,请参考以下文章