考慮這些表:
基于id...
- 比爾是約翰的老板
- 漢克是安迪和亞歷克斯的老板
writers:
| ID | 姓名 | boss_id |
|---|---|---|
| 1 | 約翰 | 2 |
| 2 | 賬單 | 2 |
| 3 | 安迪 | 4 |
| 4 | 漢克 | 4 |
| 5 | 亞歷克斯 | 4 |
他們writers寫papers...
papers:
| ID | 標題 | writer_id |
|---|---|---|
| 1 | 波士頓 | 1 |
| 2 | 芝加哥 | 4 |
| 3 | 思科 | 3 |
| 4 | 西雅圖 | 2 |
| 5 | 北 | 5 |
我需要一個 SQL 查詢,它將回傳為 Hank ( ==> )作業papers.*的每篇論文。這恰好包括漢克本人,因為他注冊為自己的老板,但這并不重要。writersid = 4boss_id = 4
期望的輸出:
| ID | 標題 | writer_id |
|---|---|---|
| 2 | 芝加哥 | 4 |
| 3 | 思科 | 3 |
| 5 | 北 | 5 |
我所擁有的,沒有希望作業:
SELECT * FROM papers p WHERE ( writers w AS p.writer_id JOIN w.boss_id = 4 );
uj5u.com熱心網友回復:
你在解決問題的正確軌道上。這里我分享兩種方法:一種是使用子查詢,另一種是連接兩個表。
模式和插入陳述句:
create table writers( id int, name varchar(200), boss_id int);
insert into writers values( 1,'John',2);
insert into writers values( 2,'Bill',2);
insert into writers values( 3,'Andy',4);
insert into writers values( 4,'Hank',4);
insert into writers values( 5,'Alex',4);
create table papers ( id int, title varchar(200),writer_id int);
insert into papers values( 1,'Boston',1);
insert into papers values( 2,'Chicago',4);
insert into papers values( 3,'Cisco' ,3);
insert into papers values( 4,'Seattle',2);
insert into papers values( 5,'North' ,5);
查詢1(使用子查詢):
SELECT * FROM papers p WHERE writer_id in ( select id from writers where boss_id = 4 );
輸出:
| ID | 標題 | writer_id |
|---|---|---|
| 2 | 芝加哥 | 4 |
| 3 | 思科 | 3 |
| 5 | 北 | 5 |
查詢 2(使用連接):
select p.* from papers p
inner join writers w on p.writer_id=w.id
where w.boss_id=4
輸出:
| ID | 標題 | writer_id |
|---|---|---|
| 3 | 思科 | 3 |
| 2 | 芝加哥 | 4 |
| 5 | 北 | 5 |
db<>在這里擺弄
uj5u.com熱心網友回復:
您可以使用writers 表主鍵和papers 表外鍵將兩個表連接在一起,然后在where 子句中指定boss_id。
SElECT p.*
FROM papers p
INNER JOIN writers w ON p.writer_id = w.id
WHERE w.boss_id = 4
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/480133.html
下一篇:SQL:使用WHERE子句連接表
