當前位置:首頁 » 編程語言 » sql多表多條件查找
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql多表多條件查找

發布時間: 2023-08-16 00:19:40

『壹』 多表關聯查詢的sql執行原理

平時大多是執行單表查詢,通常你把索引建好,讓他盡可能走索引,性能都沒問題。但其實也有不少的多表關聯語句,因為有時查找目標數據,不得不藉助多表關聯的語法,才能實現你想要但使用多表關聯的時候,你的SQL性能就可能會遇到一些問題。

若在FROM字句後直接來兩個表名,就是要針對兩個表進行查詢,而且會把兩個表的數據給關聯,假設你未限定多表連接條件,可能會搞出一個笛卡爾積。所以通常都會在多表關聯語句中的WHERE子句里引入一些關聯條件:where t1.x1=xxx and t1.x2=t2.x2 and t2.x3=xxx

假設:

所以該SQL執行過程可能是:

他可能是先從一個表裡查一波數據:驅動表

再根據這波數據去另外一個表裡查一波數據進行關聯,另外一個表叫:被驅動表

員工表包含id(主鍵)、name(姓名)、department(部門)

產品銷售業績表裡包含id(主鍵)、employee_id(員工id)、產品名稱(proct_name)、銷售業績(saled_amount)。

現在要看每個員工對每個產品的銷售業績:

此時看到的數據:

全表掃描員工表,找出每個員工,然後針對每個員工的id去業績表找 employee_id 跟員工id相等的數據,可能每個員工的id在業績表裡都會找到多條數據,因為他可能有多個產品的銷售業績。

然後把每個員工數據跟他在業績表裡找到的所有業績數據都關聯,比如:

內連接,inner join,要求兩個表裡的數據必須完全能關聯上,才能返回。

假設員工表裡有個人是新員工,入職到現在無銷售業績,此時還是希望能夠查出來該員工的數據,只不過他的銷售業績那塊可以給個NULL,表示無業績。但若僅使用上述SQL語法,似乎搞不定,因為必須要兩個表能關聯上的數據才查得出來。

此時就需要

outer join,分為:

還有個語法限制,如果你是內連接,那連接條件可以放在where語句,但外連接一般是把連接條件放在ON語句:

一般寫多表關聯,主要就是內連接和外連接。

『貳』 SQL中多條件同時查詢語句怎麼寫

1、首先我們打開電腦里前碼的SQL打開一個資料庫

『叄』 SQL語句聯表查詢

SELECTitem,sum(a.need_pay) '需要支付金額',sum(b.paymoney) '已付金額'

FROM A,(SELECT b.A_id,sum(B.money) 'paymoney' FROM B group by B.A_id) b

where A.A_id = b.A_id

GROUP BY A.item

HAVINGsum(a.need_pay)<> sum(b.paymoney)

(3)sql多表多條件查找擴展閱讀:

關於sql語句連表查詢

語法

SELECT fields

FROM table1 INNER JOIN table2

ON table1.field1 compopr table2.field1 AND

ON table1.field2 compopr table2.field2 OR

ON table1.field3 compopr table2.field3;

也可以通過如下語法嵌套 JOIN 語句:

SELECT fields

FROM table1 INNER JOIN

(table2 INNER JOIN [( ]table3

[INNER JOIN [( ]tablex [INNER JOIN ...)]

ON table3.field3 compopr tablex.fieldx)]

ON table2.field2 compopr table3.field3)

ON table1.field1 compopr table2.field2;

LEFT JOIN 或 RIGHT JOIN 可以嵌套在 INNER JOIN 之中,但是 INNER JOIN 不能嵌套於 LEFT JOIN 或 RIGHT JOIN 之中。

『肆』 SQL多表查詢多個欄位

SQL語句格式:

select 欄位鎮襪猜1,欄位2,欄位3

from 表1,表2,表3

where 條件

例子:查詢s表中的sno欄位,好帶 c表中的cno欄位,j表中的jno欄位

select sno,pno,jno

from s,p,j

(4)sql多表多條件查找擴展閱讀:

刪除語句御型:DELETE * FROM table_name

查詢語句:SELECT * FROM Persons WHERE ROWNUM <= 5

建立視圖:CREATE VIEW view_name AS SELECT column_name(s) FROM table_name WHERE condition