簡單的多表聯查sql

2021-07-09 09:03:14 字數 3846 閱讀 5082

mysql資料庫預設建立的test資料庫下實踐

/*建立兩張表 users 和 products*/ 

use test;

create

table

`test`.`users`( `user_id`

intnot

null auto_increment, `username`

varchar(30), primary

key (`user_id`) );

create

table

`test`.`products`( `p_id`

intnot

null auto_increment, `user_id`

int, `p_name`

varchar(40), primary

key (`p_id`) );

/**插入users表資料**/

insert

into

`test`.`users` ( `username`) values ('user1');

insert

into

`test`.`users` ( `username`) values ('user2');

insert

into

`test`.`users` ( `username`) values ('user3');

insert

into

`test`.`users` ( `username`) values ('user4');

insert

into

`test`.`users` ( `username`) values ('user5');

insert

into

`test`.`users` ( `username`) values ('user6');

insert

into

`test`.`users` ( `username`) values ('user7');

insert

into

`test`.`users` ( `username`) values ('user8');

insert

into

`test`.`users` ( `username`) values ('user9');

insert

into

`test`.`users` ( `username`) values ('user10');

insert

into

`test`.`users` ( `username`) values ('user11');

insert

into

`test`.`users` ( `username`) values ('user12');

insert

into

`test`.`users` ( `username`) values ('user13');

/*插入products表資料*/

insert

into

`test`.`products` (`user_id`, `p_name`) values ('1', 'p1');

insert

into

`test`.`products` (`user_id`, `p_name`) values ('2', 'p2');

insert

into

`test`.`products` (`user_id`, `p_name`) values ('3', 'p3');

insert

into

`test`.`products` (`user_id`, `p_name`) values ('4', 'p4');

insert

into

`test`.`products` (`user_id`, `p_name`) values ('5', 'p5');

insert

into

`test`.`products` (`user_id`, `p_name`) values ('6', 'p6');

insert

into

`test`.`products` (`user_id`, `p_name`) values ('7', 'p7');

insert

into

`test`.`products` (`user_id`, `p_name`) values ('8', 'p8');

insert

into

`test`.`products` (`user_id`, `p_name`) values ('9', 'p9');

insert

into

`test`.`products` (`user_id`, `p_name`) values ('10', 'p10');

insert

into

`test`.`products` (`user_id`, `p_name`) values ('11', 'p11');

insert

into

`test`.`products` (`user_id`, `p_name`) values ('12', 'p12');

insert

into

`test`.`products` (`user_id`, `p_name`) values ('13', 'p13');

1、查詢產品最多的五個使用者名稱,以及產品數目

/*查出每個產品對應的使用者名稱的記錄*/

select p_id,username from users u , products p where u.`user_id` = p.user_id;

/*將查詢出來的結果建立乙個檢視p_u_view,儲存到資料庫中*/

create

view p_u_view as (select username,p_id from users u , products p where u.`user_id` = p.user_id)

/*從檢視中查詢出產品最多的前三名使用者名稱以及產品數量*/

select username,count(username) pcount from p_u_view

group

by username

order

by pcount desc

limit 0,3;

/*完整的sql語句*/

select username,count(username) pcount from (select username,p_id from users u , products p where u.`user_id` = p.user_id) name_count

group

by username

order

by pcount desc

limit 0,3;

/*********desc 遞減 ,asc 遞增 *********/

/*oracle中不支援limit語法,可以用top語法 或者使用oracle的隱藏欄位rownum來實現*/

查詢結果:

sql多表聯查

sql的多表聯查有點忘了,搞個例子記錄一下,以後再忘來看看。一 內連線 student表 name collegeid 張三11 李四college表 collegeid collegename 11清華 北大內連線 select name,college.collegename from stud...

SQL多表聯查總結

交叉連線 不常用 返回兩個表的笛卡爾乘積 也即全組合排列 中符合查詢條件的資料行。內連線返回連線表中符合連線條件和查詢條件的資料行。左外連線 返回符合連線條件和查詢條件 即 內連線 的資料行,且還返回左表中不符合連線條件但符合查詢條件的資料行。右外連線 返回符合連線條件和查詢條件 即 內連線 的資料...

SQL多表關聯查詢

關於 有時候,我們查詢資料時,會採用多資料庫關聯查詢的方式。資料庫通過連線兩張表或多張表查詢時,會生成一張臨時的中間表,然後返回給使用者的就是這張臨時表的資料。那麼具體怎麼操作呢?我們可以採用left join,搭配on where來實現。具體備註 1.on條件是在生成臨時表時使用的條件,它不管on...