1樓:匿名使用者
create table b(sid int,分數 int)insert into dbo.b
( sid, 分數 )
select 1,100
union all
select 1,90
union all
select 2,85
union all
select 2,75
create table a(id int,name varchar(10),總分 int)
insert into dbo.a
( id, name, 總分 )
select 1,'張三',0
union all
select 2,'李四',0
-----更新語句
update a set 總分=b.合計
from a inner join (select sid ,sum(分數) as 合計 from b group by sid) b on a.id=b.sid
where a.id=1
.........
1 張三 190
2 李四 0
2樓:我tm不管
update a,(select sid,sum(分數) as 分數 from b group by sid) b set a.總分=b.分數 where a.
id=b.sid and a.id=1
請教資料庫高手,在access2003裡,用sql語句查詢實現兩表關聯查詢用count更新其中一表?
3樓:匿名使用者
access資料庫是可以用兩個表關聯的結果來更新其中一列表的。但是由於access jet引擎功能較弱,它只能用資料表中實際存在的列的值來更新其中一張表,對於計算得來的列的列值是無法用於更新的,哪怕是事前將有查詢關語句儲存為乙個固定名稱的查詢也不成。
例如 update t2 a,(select a,count(a) as cnt from t1 group by a) b
set a.c=b.cnt where b.a=a.a;
或者將其中的子查詢「select a,count(a) as cnt from t1 group by a」 儲存為查詢「q1」
上述語句改寫如下
update t2 a,q1 b set a.c=b.cnt where b.a=a.a;
上述兩句的語法都沒問題,但是無法執行(報錯必須有可更新的查詢)
這麼辦?因為cnt列是計算得來的,jet無法利用該列更新t2的字段c,那我們就利用一張中間表t3來繞過這個限制。
先執行生成表查詢,將上述子查詢結果儲存為表「t3」
select a,count(a) as cnt into t3 from t1 group by a;
再執行下列更新即可實現樓主的需求
update t2 a,t3 b set a.c=b.cnt where b.a=a.a;
如果以後要經常執行該操作,請先執行一下面兩個動作查詢來更新之前t3表裡已有的資料,以免舊有資料影響更新查詢的正確性。
1.清空舊資料
delete from t3;
2.存入新的子查詢結果
insert into t3 select a,count(a) as cnt from t1 group by a;
3.執行更新查詢,更新t2表的c列
update t2 a,t3 b set a.c=b.cnt where b.a=a.a;
確實有些麻煩,但是目前暫時還未能找到不借助中間t3表的sql語句解決方案。
其實更新t2表的c列有些多餘,因為我們可以非常方便地用選擇查詢得到你要的列表
select a.id,a.a,nz(b.cnt,0) as c from t2 a left join
(select a,count(a) as cnt from t1 group by a) b
on b.a=a.a;
一句選擇查詢就搞定了,實在是沒必要去花大把的精力來維護這個c列!
4樓:創作者
select [t2].a,[t2].c from [t2] left join select * from (select [t1].
a, count(*) as 數量 from [t1] group by [t1].a) as [查詢1] on [t2].a=[查詢1].
a;如果你覺得寫得累,可以用很簡單的辦法解決,直接把t1按a列統計一下,然後儲存為查詢1,再把查詢1跟t2連線查詢就可以了
5樓:love灬闖天涯
用程式分別鏈結sqlserver2008 和 access資料庫
然後進行**進行比較。
6樓:匿名使用者
select id,t2a,count(*) as c from (
select t1.a as t1a,t2.id,t2.a as t2a from t1,t2 where t1.a=t2.a
)c就是你需要的資料
7樓:匿名使用者
你在t1表中先彙總按a列,再與t2表關係一下,選出彙總列就可以了.
在access資料庫中,怎樣用sql語句把乙個表的某些欄位的某些記錄插入另乙個表?
8樓:匿名使用者
對兩個表的字段有要求,不一樣要兩個表的字段一樣或者說字段順序一樣,
只需要將查詢出來並結果整理的資料表與目標資料表的字段數目以及順序一直就可以了,^_^
9樓:說啊———喵
通過sql語句把乙個表的bai某du
些字段的某些記錄插zhi入到另乙個表中,可參照下面dao的例子:
insert into 表內1 ( 字段
容1, 欄位2, 欄位3 )
select 表2.欄位1, 表2.欄位2, 表2.欄位3from 表2
where 表2.欄位3>20
該例子實現將表2中滿足條件的字段1、欄位2、欄位3的值追加到表1中的對應字段,要求對應欄位的資料型別一致,名稱不一定相同
10樓:
insert into a(欄位1,欄位2,……)select (欄位1,欄位2,……) from b
access根據三個表的資料建立乙個彙總表的sql語句如何寫? 10
11樓:匿名使用者
把幾個表結構,表關係,貼出來!
12樓:匿名使用者
sql server匯出到access.
access中如何用sql語句將兩個條件相等的**資料匯入另外乙個表中。
13樓:匿名使用者
試試更新查詢:
update 表2 set 欄位g=欄位c where 表一.欄位a=表2.欄位e and 表1.欄位b=表2.欄位f
14樓:匿名使用者
update 表2 set 表2.g=表1.c where 表2.e=表1.a and 表2.f=表1.b
如何在access資料庫中用sql查詢兩個表中相同的資料,並將乙個表中的某個欄位的值賦予另乙個表,謝謝
15樓:
a,b 為表2沒有的字段,d為倆表相同的字段1.先在表二中增加沒有的字段
alter table t2
add column a int,column b char(10)2.將表1中這些欄位的值更新過來
update t2
set t2.a=t1.a,
t2.b=t1.b
from t1,t2
where t1.d=t2.d
16樓:
有點不明白你所要的結果!最好給一下表的結構
access中有2個表,想找出2個表不一樣的資料,sql查詢怎麼寫?
17樓:飛揚跋扈
select * from x1 where id not in(select a.id from x1 a left join x2 b on a.ph = b.ph)
解釋下,先查出所有項都一樣的,x1表的id然後id不再這裡的就是不同的嘍
18樓:
先要確定1個或者幾個索引字段,如果是多個字段的話先連線起來
select * from 表1 where 表1.欄位1 & 表1.欄位2 not in (select 欄位1&欄位2 from 表2)
19樓:匿名使用者
1、select * from t2 where id not in (select id from t1)
2、select * from t2 where not exists(select * from t1 where t1.id=t2.id)
3、select t2.* from t2 left join t1 on t2.id=t1.id where t1.id is null
三種方法都得不到所想要的不同內容的結果(vb程式設計,語法正確,結果為空),崩潰了。
我有表1=standard_data1 ,表2=standard_data2,兩個表裡面只有1列資料為msisdn,下面sql語句沒法找到不同的內容。
select * from standard_data1 where standard_data1.msisdn not in(select standard_data2.msisdn from standard_data2)
select * from standard_data1 where not exists(select * from standard_data2 where standard_data1.msisdn=standard_data2.msisdn)
更新:distinct是關鍵,在select後面加上這個就成功了。另外,最快的查詢方法是下面這2條,之所以是2條因為要找兩次才能找全互相不同的資料:
select distinct standard_data1.* from standard_data1 left join standard_data2 on standard_data1.msisdn=standard_data2.
msisdn where standard_data2.msisdn is null
select distinct standard_data2.* from standard_data2 left join standard_data1 on standard_data2.msisdn=standard_data1.
msisdn where standard_data1.msisdn is null
找相同內容的語句就很容易就出正確的結果了,如下:
select distinct standard_data1.* from standard_data1 inner join standard_data2 on standard_data1.msisdn=standard_data2.
msisdn
20樓:友冬卉
用vlookup函式很快就能找出來。
21樓:匿名使用者
怎麼會呢
select * from 表1 where 表1比較字段 not in (select 表2比較字段 from 表2)
22樓:匿名使用者
select * from 1,2 where 1.name<>2.name
如何在Access中使用SQL語句
不想起名字了 建立一個查詢 切換到sql模式 輸入sql語句 儲存雙擊執行 這是儲存查詢 如果要在 中使用 方法就多了 access資料庫怎麼使用sql語句 千鋒教育 access本身可以建好一個完整的查詢的,可基於單表,可以基於多個表。建好後,點查詢設計中sql檢視,就是一個完整的sql語名了,而...
在access裡如何執行sql語句
慶有 access sql查詢語句是相容的,有兩種方式可以使用sql語句 方式一 在 查詢 的試圖裡,可以使用access的嚮導模式,也可以直接使用sql語言模式,如下圖 開啟任何一個查詢,在標籤處選擇sql檢視,就會變成以下sql介面了 access還有一種方式,就是在其自帶的vb裡面,但是不能直...
access資料庫中怎麼引用查詢的sql語句
access本身可以建好一個完整的查詢的,可基於單表,可以基於多個表。建好後,點查詢設計中sql檢視,就是一個完整的sql語名了,而不用一個詞一個詞的寫,再追加寫where語句,已經全部搞定了,你試試看。 select from 表1 where 欄位1 in select 欄位2 from 表2 ...