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 字...