select 多表查詢 組合查詢語句
很多時候需要查詢兩張表及以上的表來獲取需要的資訊
一張表的時候查詢語句:
select 列1,列2 from 表 where 查詢條件
例如:一張表
username | age | sex |
張三 | 24 | 男 |
李四 | 23 | 女 |
王麻子 | 22 | 男 |
查詢一張表中的資料
select username, age from 資訊表 where username="王麻子"
查詢出來的結果
username | age |
王麻子 | 22 |
兩個表的時候查詢語句
① select 表1.列1, 表1.列2,表2.列1 from 表1,表2 where 表1.列x=表2.列x
user | age | user_id |
張三 | 20 | 111 |
李四 | 18 | 123 |
趙五 | 32 | 345 |
還有另一張表
user_id | wuqi |
123 | 鐵錘 |
345 | 大炮 |
用這兩個表查使用者名稱和所使用的武器
① select LOL.user ,LOLp.wuqi from LOL,LOLp where LOL.user_id=LOLp.user_id
這樣的結果就是
user | wuqi |
李四 | 鐵錘 |
趙五 | 大炮 |
② select LOL.user ,LOLp.wuqi from LOL left join LOLp on LOL.user_id=LOLp.user_id where 篩選條件(在不需要篩選條件的時候沒有where語句)
其他的查詢方式:
SELECT
distinct
a.userId,a.tijianhao,a.SURVEYID,
a.tbrq as rq,
convert(varchar(10),a.tbrq,120) as tbrq,
a.tijianhao as TJH,
isViewed,
b.jieguo as name, //這裡可以修改正(select jieguo from where tijianhao=a.tijianhao and xmcode="name")name,
b.flag as TYPE,
a.has_survey
FROM SHANGWURECORD a
left join ShangWuJieGuo b on a.tijianhao=b.tijianhao and b.xmcode='name'
where a.SURVEYID !='' and a.userid='1234567898763' and belong_id='1234567898763
//比如 帶有別名的
SELECT
distinct
a.userId,a.tijianhao,a.SURVEYID,
a.tbrq as rq,
convert(varchar(10),a.tbrq,120) as tbrq,
a.tijianhao as TJH,
isViewed,
(select jieguo from where tijianhao=a.tijianhao and xmcode="name")name,//剛才修改的地方
b.flag as TYPE,
a.has_survey
FROM SHANGWURECORD a
left join ShangWuJieGuo b on a.tijianhao=b.tijianhao //還有這裡的變化
where a.SURVEYID !='' and a.userid='440Y98F1DQX8' and belong_id='440Y98F1DQX8' order by a.tbrq desc
第①中一樣的 很重複的表名還是用上面整個別名比較好
select distinct SHANGWURECORD.userId,
SHANGWURECORD.tijianhao,
SHANGWURECORD.SURVEYID,
SHANGWURECORD.tbrq as rq,
convert(varchar(10),SHANGWURECORD.tbrq,120) as tbrq,
isViewed,
ShangWuJieGuo.jieguo as name,
ShangWuJieGuo.flag as TYPE,
SHANGWURECORD.has_survey
from SHANGWURECORD,ShangWuJieGuo
where SHANGWURECORD.tijianhao=ShangWuJieGuo.tijianhao
and SHANGWURECORD.userid='440Y98F1DQX8' and belong_id='440Y98F1DQX8' and ShangWuJieGuo.xmcode='name'