1樓:流浪雲風
問題1:e機構裡面的每個名稱下面有多少個**,如果要制定某一個名稱,可以在where條件中增加name最為條件:
select a.name , count(price) from a,b where a.mediid = b.
mediid and a.forgid = b.forgid and a.
forgid = 'e' group by a.name;
如果要去掉重複**可以增加distinct,如下:
select a.name , count(distinct price) from a,b where a.mediid = b.
mediid and a.forgid = b.forgid and a.
forgid = 'e' group by a.name;
問題2:查詢e機構下面,兩個表中編號相同的專案
select count(name) from a,b where a.mediid = b.mediid and a.
forgid = b.forgid and a.forgid = 'e';
2樓:我心21依舊
你要是不建主鍵多少個都可以有
3樓:匿名使用者
select name,count(*) from a,b where a.moduleid=b.moduleid
and a.forgid='e' group by name
sql server中 兩個不同的資料庫中的兩張表如何關聯? 10
4樓:小執著
1、首先就是建立幾個沒有任何關係的表,但是注意,你在將要作為外來鍵表的表上必須使用與將要作為主鍵表的資料型別相同。
2、將能唯一標識的那一行設定為主鍵,其他表類似。
3、接下來新增關係,如下圖。
4、拖動需要新增的關係,直接看圖。
5、關聯完成,如圖。
5樓:匿名使用者
一臺伺服器上的兩個不同的資料庫
如test1資料庫的a表和test2資料庫的b表
可以這樣寫
選定一個資料庫如test1
select 檢索欄位
from a
inner jion b on b.檢索欄位=a.檢索欄位
where
關聯條件
兩臺伺服器上的,2個資料庫
如果是跨伺服器的,需要建立 資料庫連結
首先建立連線伺服器
use master
goif exists (select * from sysservers where srvname = 'linkserver')
begin
exec sp_dropserver 'linkserver', 'droplogins'
endgo
exec sp_addlinkedserver 'linkserver','','sqloledb','0.0.0.0'
exec sp_addlinkedsrvlogin 'linkserver','false',null,'sa','command'
golinkserver是連線伺服器的名字,你自己喜歡取什麼就取什麼
0.0.0.0,sa,command。是你要連線的另外一臺資料庫的ip和登入使用者密碼
查詢命令:
select 檢索欄位
from a
inner jion linkserver.b on b.檢索欄位=a.檢索欄位
where
關聯條件
6樓:匿名使用者
在同一個伺服器。直接寫全名稱就可以關聯
不同伺服器。可以建立連線資料庫 然後關聯
7樓:
同一臺伺服器就好說了直接關聯查詢就可以了,不同的伺服器,需要使用opendatasource,
至於說的2005的資料庫連線跟2000的是一樣的,如果是預設例項安裝的話,如果新建的例項,需要在連線後面加例項名
兩張表在不同的資料庫,如何關聯查詢? 20
8樓:a羅網天下
mysql支援多個庫中不同表的關聯查詢,你可以隨便連結一個資料庫
然後,sql語句為:
select * from db1.table1 left join db2.table2 on db1.table1.id = db2.table2.id
只要用資料庫名加上"."就能呼叫相應資料庫的資料表了.
資料庫名.表名
mysql查詢語句
1、查詢一張表: select * from 表名;
2、查詢指定欄位:select 欄位1,欄位2,欄位3....from 表名;
3、where條件查詢:select 欄位1,欄位2,欄位3 frome 表名 where 條件表示式;
例:select * from t_studect where id=1;
select * from t_student where age>22
4、帶in關鍵字查詢:select 欄位1,欄位2 frome 表名 where 欄位 [not]in(元素1,元素2);
例:select * from t_student where age in (21,23);
select * from t_student where age not in (21,23);
5、帶between and的範圍查詢:select 欄位1,欄位2 frome 表名 where 欄位 [not]between 取值1 and 取值2;
例:select * frome t_student where age between 21 and 29;
select * frome t_student where age not between 21 and 29;
9樓:匿名使用者
舉個例子:存在兩個資料庫db1,db2。
在db1中有表table1(id,name)在db2中有表table1(id,iid,allinfo)現在想把table1,table1兩表關聯起來查詢一些資料。
查詢語句如下:select *
from db1.dbo.table1 inner joindb2.
dbo.table2 on db1.dbo.
table1.id = db1.dbo.
table1.iid
這樣就可以查出所有存在關係的資料。
10樓:浪谷詩社
這個可以關聯查詢
以mssql為例,其他的類似
sp_addlinkedserver '庫別名','sqloledb','b庫名'
sp_addlinkedsvrlogin '庫別名','sa','密碼'
然後在a庫中就可以這樣訪問b庫:
select * from 庫別名.b庫名.dbo.torder
帶完整引數的例子:
exec sp_addlinkedserver '10.16.1.
*,'','sqloledb','10.16.1.
*',null,null,'*lant(遠端庫名)'
exec sp_addlinkedsrvlogin '10.16.1.*','false',null,'***a*ly','con***60'
另外:sp_helpserver 幫助
exec sp_droplinkedsrvlogin '10.16.1.*', null;--刪除連結的登入資訊
exec sp_dropserver '10.16.1.*', null;--刪除連結的遠端伺服器
10.16.1.*.sms.dbo.表名
11樓:匿名使用者
1. 什麼資料庫
2. 在一個例項
裡嗎?如果在一個例項裡,可以加上資料庫名訪問select * from databasea.tuser user,databaseb.
torder order where user.userid = order.userid
12樓:匿名使用者
select x..... y.....
from a.tuser x
, b.torder y
where x,user_id = y.user_id
用一個sql查詢語句查詢兩個表的資料是否一致,不一致的資料顯示出來 疑難問題
13樓:有緣無份
**如下:
select * from a
awhere not
exists(select * from
b bwhere a.name=b.name)
檢視錶結構
sql>desc emp;
查詢所有列
sql>select * from emp;
查詢指定列
sql>select empmo, ename, mgr from emp;
sql>select distinct mgr from emp; 只顯示結果不同的項
查詢指定行
sql>select * from emp where job='clerk';
結構化查詢語言是高階的非過程化程式語言,允許使用者在高層資料結構上工作。它不要求使用者指定對資料的存放方法,也不需要使用者瞭解具體的資料存放方式,所以具有完全不同底層結構的不同 資料庫系統,,可以使用相同的結構化查詢語言作為資料輸入與管理的介面。結構化查詢語言語句可以巢狀,這使它具有極大的靈活性和強大的功能。
14樓:匿名使用者
name欄位在表中是否是主鍵 如果是的話可以這樣寫 select * from b where name not in (select name from a) ps: a表為刪除過資料的表
15樓:匿名使用者
--假如b刪了一些 select * from a where name not in (select name from b )
16樓:匿名使用者
select * from a a where not exists(select * from b b where a.name=b.name)
sql中,如何查詢存在一個表而不在另一個表中的資料記錄 20
17樓:匿名使用者
首先,在sql中(以sql server為例),查詢存在一個表而不在另一個表中的資料記錄的方法有很多,介紹其中4種:
1、方法一(僅適用單個欄位):使用 not in ,比較容易理解,缺點是效率低
如:select a.id from a where a.id not in (select id from b);
2、方法二(適用多個欄位匹配):使用 left join...on... , "b.id isnull" 表示左連線之後在b.id 欄位為 null的記錄。
如:select a.id from a left join b on a.id=b.id where b.id is null ;
3、方法三(適用多個欄位匹配)
如:select * from b where (select count(1) as num from a where a.id = b.id) = 0;
4、方法四(適用多個欄位匹配)
如:select * from a where not exists(select 1 from b where a.id=b.id)
接著,我們來分析你的sql語句為什麼返回資料不準確的原因。
從你的sql基礎語句來看,你使用了方法一和方法四這兩種,兩種語法本身都是正確的,但是卻沒有達到預期的效果,初步分析,問題可能出在gsdj和swdj這兩張表的qymc欄位的判斷比較上。
舉個例子:'企業名稱'和'企業名稱 '這兩個字串看似相同,實際卻並不相同,因為第二個“企業名稱 ”的後面跟了一個空格字元。就因為這個空格字元導致這個"'企業名稱'='企業名稱 '"等式不成立。
考慮到你qymc這個欄位的型別是字元型,建議你在原有sql基礎上做一個微調如下:
select * from gsdj gs where not exists (select * from swdj sw where rtrim(ltrim(sw.qymc )) )=rtrim(ltrim(gs.qymc )));
其中ltrim()可以去除左側空格,rtrim()可以去除右側的空格,也就是說我們是對去除空格後的企業名稱進行比較,排除了空格的干擾。
擴充套件資料:
在sql中,對於字元型文字資料,經常需要用到去空格的操作,對oracle資料來說可以通過trim()函式來簡單實現,而sql server中並沒有trim()函式,只有ltrim()和rtrim()兩個函式。
sql 中使用ltrim()去除左邊空格 ,rtrim()去除右邊空格 ,沒有同時去除左右空格的函式,要去除所有空格可以用replace(字串,' ',''),將字串裡的空格替換為空。
例:去除空格函式
declare @temp char(50)
set @temp = ' hello sql '
print ltrim(@temp) --去除左邊空格
print rtrim(@temp) --去除右邊空格
print replace(@temp,' ','') --去除字串裡所有空格
print @temp
>> 輸出結果
hello sql
hello sql
hellosql
hello sql
怎麼設定兩個主鍵在access資料庫表中
建立複合主鍵 可以指定多個欄位的組合用作表的主鍵,但是現在很 少這樣做。這種主鍵通常稱為複合主鍵。如圖2 23 所示,選擇要在複合主鍵中包括的多個欄位,然後單擊 工具 功能區選項卡中的鑰匙圖示。當然,如果在表設計中這些 欄位排列在一起會更有助於快速操作。開發人員強烈感覺到主鍵應該由資料庫中原本出現的...
關於mysql資料庫兩個表資料對比問題
insert into t2 a,b,c select a,b,c from t1 where concat a,b,c not in select concat a,b,c from t2 注意 以上語句不能處理a,b,c中有null值的情況。 不建議圖省事,老老實實寫三條比較好。insert i...
SQL資料庫,如何把一張表從資料庫中插入到另外資料庫?如何寫語句
如果兩個表結構完全一樣的,用insert into data2.table2 select from data1.table1 如果結構不一樣或者你要指定欄位,用insert into data2.table2 欄位1,欄位2,欄位 select 欄位j,欄位k,欄位m from data1.tab...