在sqlserver資料庫中有6張表這6張表中都有

時間 2022-01-04 10:15:02

1樓:翔宇亭it樂園

假設,第一張表中(表名t1)的列為,id,c11,c12,c13第2張表中(表名t2)的列為:id,c21,c22,c23以此類推,則可以使用下面的方式查詢:

select t1.id,t1.c11,t1.

c12,t1.c13,t2.c21,t2.

c22,t2.c23,t3.c31,t3.

c32,t3.c33,t4.c41,t4.

c42,t4.c43,t5.c51,t5.

c52,t5.c53,t6.c61,t6.

c62,t6.c63

from t1

inner join t2 on t1.id = t2.idinner join t3 on t1.

id = t3.idinner join t4 on t1.id = t4.

idinner join t5 on t1.id = t5.idinner join t6 on t1.

id = t6.id希望能幫到你

2樓:曲韶酆凝荷

如果你的sql是sql2000varchar最長長度可以是8000,

如果是sql2005以上版本可以支援varchar(max),最長可達2g的欄位容量資料

你可以試試,也許你的1024還是不夠。

sql server,一張表中,有多個欄位關聯另一張表,怎麼寫sql語句?

3樓:匿名使用者

對於這個問題,無論語句怎麼寫,其實執行起來資料庫內部還是要用join操作來進行處理的,所以你用join就可以,優化的話可以再user表的id屬性上加索引(如果是主鍵預設是有索引的)

4樓:匿名使用者

原理的確是來

你那源個思路。bai但可以通du過下面zhi方式來簡化寫法

daoselect

auserid,auserdes = (select userdes from user b where a.auserid = b.user),

buserid,buserdes = (select userdes from user b where a.bauserid = b.user),

cuserid,cuserdes = (select userdes from user b where a.causerid = b.user),

from userlist a

sql中,如何查詢存在一個表而不在另一個表中的資料記錄 20

5樓:匿名使用者

首先,在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

6樓:妗妗歘歘

我有兩張表如何查詢在一個表姑在另一個表中的資料

7樓:煙染暖陽

select * from swdj where qymc not in (select qymc from gsdj)

8樓:匿名使用者

select * from gsdj t1 where not exists (select * from swdj where qymc=t1.qymc )

9樓:匿名使用者

select * from gsdj gsdj where gsdj.qymc not in (select swdj.qymc from swdj swdj) 或者

select * from gsdj gs where not exists (select * from swdj sw where sw.qymc=gs.qymc )

試試加上表別名

10樓:丶我是週週

select * from gsdj where gsdj.qymc =swdj.qymc and gsdj.

qymc not in (select swdj.qymc from swdj )這兩個表之間必須要有一個相連線的列

11樓:匿名使用者

select * from gsdj where not exists (select * from swdj where gsdj.qymc=swdj.qymc)

12樓:鎖映僪鶴騫

只需判斷一下即可,根據你的題目意思應該是a表的id和b表的id相關聯。

select *, case when (select count(*) from b where id = a.id)>0 then 1 else 0 end as flag from a如果你是想a表和b表的欄位和id這兩列都一樣,才將flag顯示為1的話,用下面的查詢:

select *, case when (select count(*) from b where id = a.id and 欄位 = a.欄位)>0 then 1 else 0 end as flag from a

sql查詢兩個表相同的兩個欄位裡不同的資料有哪些

13樓:幸運的

sql語句如下:

select * from table1

full join table2 on  table1.xingming = table2.xingming

where

table1.xingming is null or table2.xingming is null

分析:1、首先得出兩個表的並集

注:full join :存在匹配,匹配顯示;同時,將各個表中不匹配的資料與空資料行匹配進行顯示。可以看成是左外連線與右外連線的並集。

圖中結果左側兩列為table1,右側兩列為table2。

前三條記錄表示table1和table2都有的資料。

table1項為null的記錄說明table2中無相同項。

同理,table2項為null的記錄說明table1中無相同項。

下面,只需要設定篩選條件,過濾出所需記錄。

2、設定過濾條件,得到結果

從結果中可以看出,表1中的趙二在表2中沒有相同xingming的記錄。

表2中的劉六在表1中沒有相同xingming的記錄。

本題還有其它多種解法,此處列出比較好理解的一種。

14樓:匿名使用者

select * from table1 minus select * from table2

union all

select * from table2 minus select * from table1

原理minus : 返回第一個表中有、第二個表中沒有的資料注意:

minus 是 oracle 裡面用的。

如果是 sql server 的話, 用 except 替換掉 minus.

15樓:匿名使用者

easy

select xingming from table1 where not exists (select 1 from table2 where xingming = table1.xingming)

union

select xingming from table2 where not exists (select 1 from table1 where xingming = table2.xingming)

16樓:笑年

select *

from table1

where table1.xingming not in (select * from table2)

union

select *

from table2

where table2.xinming not in (select * from table1)

如何連線sqlserver資料庫

以sqlserver2008r2為例。1 開啟sql2008,使用windows身份登入 2 登入後,右鍵選擇 屬性 左側選擇 安全性 選中右側的 sql server 和 windows 身份驗證模式 以啟用混合登入模式 3 選擇 連線 勾選 允許遠端連線此伺服器 然後點 確定 4 安全性 登入名...

如何刪除sqlserver資料庫

drop database database name 如何徹底刪除sqlserver 資料庫 sql server正常情況下可以通過新增刪除將其解除安裝,但有時可能會出現一些不可遇見的原因,導致其不能自動解除安裝,就需要手工解除安裝,在手工解除安裝前要注意做好資料的備份工作,以便於 以後做還原,解...

怎樣使用SQL SERVER立資料庫

用語句建立即可。舉例如下 create database 學生基本資訊管理 建立學生基本資訊管理資料庫 on name 學生基本資訊管理資料庫 庫名 filename d database 學生基本資訊管理資料庫.mdf 主檔案存放位置 size 10,大小為10m maxsize 50,最大可擴充...