sql多表聯查詢,sql多表聯合查詢

2022-07-05 13:12:17 字數 5720 閱讀 4721

1樓:陳崗飛

可以用謂詞或聯結實現:

連線實現:

select * from b join a on b.id=a.id where a.b=21

聯結實現的條件是兩表id來自同一值域,表示意義相同.在連線時其實兩可以作成乙個表的:

也就是id,a.b,a.c,b.b.b.c

但由於空值的問題,導致了部分依賴所以才會拆分成兩個表的.

使用謂詞實現:

select * from b where id in (select id from a where a.b=21)

這個可以實現兩表id來自同一值域,但表示意義不同的情況.也就是說兩表中的id有無關性.

相比較而言,連線的方式更快一些,但這種情況是兩表來自同一值域,且意義相同,如果不是這種情況,可能得不到你正確的值的.而使用謂詞不管意義是否相同,都可以得到正確的值.

玩資料庫必須知道這兩個表是否具有相關性,也就是設計時的意義,否則優化詞句什麼的都沒有辦法去做的!

有幾種方式可以實現你的這個需求.

1. 使用表 關聯

select * from 表2 join 表1 on ( 表2.id = 表1.列1 );

2. 使用 in

select * from 表2 where id in ( select 列1 from 表1);

3.使用 exists

select * from 表2

where exists ( select 1 from 表1 where 表2.id = 表1.列1 );

select * from t2 left join t1 on t2.id = t1.列1 where t1需要啥條件 and t2需要啥條件

select * from 表2 where 某列 in (select 列1 from 表1) and id=1

2樓:匿名使用者

十張表加起來的資料量 大概是多少? 若資料量 不是很大的話,可以按照 古舟蓑笠翁 的做法來

你sql 中的from_unixtime 函式,這樣 跑法,速率應該不是 很高吧!?

建議 分步驟去做,先把時間戳 換成 datetime 後,再一步一步匯**計,統計規則,你是很清楚的

3樓:匿名使用者

select lineid,id,country from domestic

union all

select lineid,id,country from freedom

-- 聯合查詢domestic,freedom表的lineid,id,country all代表不去除重複

--功能:[sql語句] union [sql語句]將兩個語句中選擇的同一列中的不同的值篩選出來

select《表1>.《列名》 ,《表2>《列名》from《表1>outer join《表2> on《表1>.《列》=表2>.《列名》

--功能:實現兩個表的外連線

select domestic.lineid,freedom.lineid from domestic,freedom where domestic.

sames=freedom.sames

select domestic.lineid,freedom.lineid from domestic inner join freedom on freedom.

sames=domestic.sames

--功能:實現兩個表的內連線 把domestic,freedom兩個錶用domestic.sames=freedom.

sames關聯起來顯示domestic.lineid,freedom.lineid

4樓:匿名使用者

1、查詢a表 中b欄位等於21的id

select a.id from a where a.b=212、取出b表中id符合1條件的

一句sql

select * from b where b.id in(select a.id from a where a.b=21)

5樓:

select datanum,pay_type,datatime

from (select * from aut_user_recharge_record_1

union all select * from aut_user_recharge_record_2

union all select * from aut_user_recharge_record_3

union all select * from aut_user_recharge_record_4

union all select * from aut_user_recharge_record_5

union all select * from aut_user_recharge_record_6

union all select * from aut_user_recharge_record_7

union all select * from aut_user_recharge_record_8

union all select * from aut_user_recharge_record_9

union all select * from aut_user_recharge_record_10)

6樓:綱霓雲

select distinct b.id from a,b where a.b=21 and b.id=1

7樓:傲x劍

select * from b where id in (select id from a where a.b=21)

sql多表聯合查詢?

8樓:匿名使用者

select lineid,id,country from domestic

union all

select lineid,id,country from freedom

-- 聯合查詢domestic,freedom表的lineid,id,country all代表不去除重複

--功能:[sql語句] union [sql語句]將兩個語句中選擇的同一列中的不同的值篩選出來

select《表1>.《列名》 ,《表2>《列名》from《表1>outer join《表2> on《表1>.《列》=表2>.《列名》

--功能:實現兩個表的外連線

select domestic.lineid,freedom.lineid from domestic,freedom where domestic.

sames=freedom.sames

select domestic.lineid,freedom.lineid from domestic inner join freedom on freedom.

sames=domestic.sames

--功能:實現兩個表的內連線 把domestic,freedom兩個錶用domestic.sames=freedom.

sames關聯起來顯示domestic.lineid,freedom.lineid

access sql多表聯合查詢問題

9樓:

你的這種寫法不是聯合查詢,是合併查詢,應該這樣寫:

select 員工資訊表.員工編號,員工姓名,基本工資from 員工資訊表 inner join 員工工資表 on 員工資訊表.員工編號=員工工資表.員工編號

order by 員工資訊表.員工編號

sql 多表聯查詢怎麼用?

10樓:陳崗飛

可以用謂詞或聯結實現:

連線實現:

select * from b join a on b.id=a.id where a.b=21

聯結實現的條件是兩表id來自同一值域,表示意義相同.在連線時其實兩可以作成乙個表的:

也就是id,a.b,a.c,b.b.b.c

但由於空值的問題,導致了部分依賴所以才會拆分成兩個表的.

使用謂詞實現:

select * from b where id in (select id from a where a.b=21)

這個可以實現兩表id來自同一值域,但表示意義不同的情況.也就是說兩表中的id有無關性.

相比較而言,連線的方式更快一些,但這種情況是兩表來自同一值域,且意義相同,如果不是這種情況,可能得不到你正確的值的.而使用謂詞不管意義是否相同,都可以得到正確的值.

玩資料庫必須知道這兩個表是否具有相關性,也就是設計時的意義,否則優化詞句什麼的都沒有辦法去做的!

有幾種方式可以實現你的這個需求.

1. 使用表 關聯

select * from 表2 join 表1 on ( 表2.id = 表1.列1 );

2. 使用 in

select * from 表2 where id in ( select 列1 from 表1);

3.使用 exists

select * from 表2

where exists ( select 1 from 表1 where 表2.id = 表1.列1 );

select * from t2 left join t1 on t2.id = t1.列1 where t1需要啥條件 and t2需要啥條件

select * from 表2 where 某列 in (select 列1 from 表1) and id=1

sql語句兩表聯查

11樓:折柳成萌

可以用謂詞或聯結實現:

連線實現:

select * from b join a on b.id=a.id where a.b=21

聯結實現的條件是兩表id來自同一值域,表示意義相同.在連線時其實兩可以作成乙個表的:

也就是id,a.b,a.c,b.b.b.c

但由於空值的問題,導致了部分依賴所以才會拆分成兩個表的.

使用謂詞實現:

select * from b where id in (select id from a where a.b=21)

這個可以實現兩表id來自同一值域,但表示意義不同的情況.也就是說兩表中的id有無關性.

相比較而言,連線的方式更快一些,但這種情況是兩表來自同一值域,且意義相同,如果不是這種情況,可能得不到你正確的值的.而使用謂詞不管意義是否相同,都可以得到正確的值.

玩資料庫必須知道這兩個表是否具有相關性,也就是設計時的意義,否則優化詞句什麼的都沒有辦法去做的!

有幾種方式可以實現你的這個需求.

1. 使用表 關聯

select * from 表2 join 表1 on ( 表2.id = 表1.列1 );

2. 使用 in

select * from 表2 where id in ( select 列1 from 表1);

3.使用 exists

select * from 表2

where exists ( select 1 from 表1 where 表2.id = 表1.列1 );

select * from t2 left join t1 on t2.id = t1.列1 where t1需要啥條件 and t2需要啥條件

select * from 表2 where 某列 in (select 列1 from 表1) and id=1

SQL多表條件查詢

3個表直接join就可以了。select a.故障,sum c.數量 as 數量from 故障 a,隨工記錄 b,隨工明細 cwhere a.類別 a1 and cast b.日期 as datetime between 2008 4 2 and 2008 4 3 and a.故障 c.故障 and...

SQL多表巢狀一對多查詢,SQL多表巢狀一對多查詢

好幾種寫法,我這裡就寫乙個算拋磚引玉吧,也算給你乙個提示。select name from a where id in select c.aid from c where bin in select id from b where job in q r 也可以直接版關聯到c表然後相等,這權個辦法應該...

sql查詢語句like 的問題,sql查詢語句Like 的問題

like 操作符用於在 where 子句中搜尋列中的指定模式。sql like 操作符語法 select column name s from table name where column name like pattern 萬用字元 描述 替代一個或多個字元 僅替代一個字元 charlist 字...