sql資料庫中兩個表ab存放內容不一樣需要關聯兩

時間 2021-10-14 20:16:29

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

關於資料庫表與表之間的聯絡,SQL資料庫中表與表之間的關聯怎麼建立

資料庫由若干個表構成。表與表之間通過主鍵和外來鍵構成關係。主鍵和外來鍵是相對的。這個表的主鍵,可能就是另一個表的外來鍵。或者說,一個鍵,在這個表中是主鍵,而在另一個表中可能就是外來鍵了。主鍵與外來鍵只是區別於他的功能。 雁子 一對一 例如t person表和t card表,即人和身份證。這種情況需要...

sql資料庫兩個外來鍵做聯合主鍵

聯合主鍵是有著特殊的需求的。建表的時候建立 create table 表名 欄位名1 int not null,欄位名2 nvarchar 13 not null primary key 欄位名1,欄位名2 欄位名3 欄位名n 或者建表之後修改表結構 alter table 表名 with noch...

請問oracle資料庫中兩張表分別在兩個資料庫中怎麼

無法進行關聯,oracle不能跨資料庫操作,只可以跨使用者操作。sql select a.name b.id from user1.table1 a,user2.table2 b where a.id b.id 解釋 當前登入的使用者必須有訪問user1表table1許可權和user2使用者的tab...