1樓:匿名使用者
對兩個表的欄位有要求,不一樣要兩個表的欄位一樣或者說欄位順序一樣,
只需要將查詢出來並結果整理的資料表與目標資料表的欄位數目以及順序一直就可以了,^_^
2樓:說啊———喵
通過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中的對應欄位,要求對應欄位的資料型別一致,名稱不一定相同
3樓:
insert into a(欄位1,欄位2,......)select (欄位1,欄位2,......) from b
sql中,如何查詢存在一個表而不在另一個表中的資料記錄 20
4樓:匿名使用者
首先,在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
5樓:妗妗歘歘
我有兩張表如何查詢在一個表姑在另一個表中的資料
6樓:煙染暖陽
select * from swdj where qymc not in (select qymc from gsdj)
7樓:匿名使用者
select * from gsdj t1 where not exists (select * from swdj where qymc=t1.qymc )
8樓:匿名使用者
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 )
試試加上表別名
9樓:丶我是週週
select * from gsdj where gsdj.qymc =swdj.qymc and gsdj.
qymc not in (select swdj.qymc from swdj )這兩個表之間必須要有一個相連線的列
10樓:匿名使用者
select * from gsdj where not exists (select * from swdj where gsdj.qymc=swdj.qymc)
11樓:鎖映僪鶴騫
只需判斷一下即可,根據你的題目意思應該是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
怎樣用asp連線Access資料庫,註冊,登入,返回
兩種方式 1 if 登陸成bai功du zhi then response.write else response.write end if 2 if 登陸成功 then response.redirect 成功頁面.asp?anwser 1 else response.redirect 註冊頁面....
access中web資料庫和資料庫有什麼區別
看下面的回答都應該是不如你的意,他們應該是沒有去看那個版本的新建資料庫功能。綜合得到的知識,新建web資料庫是作為共享訪問資料庫的需要,而資料庫就是普通本地開發的資料庫。開發使用安裝在伺服器上的應該都沒有限制吧 不知道你想表達的是什麼,不過他們都是資料庫的一種,只不過每中資料庫的用途和功能不太一樣而...
oracle資料庫怎樣用SQL語句把欄位中所有的位元組轉化在大寫
用函式upper就可以處理了 upper 返回將小寫字元資料轉換為大寫的字元表示式。更新 update 表名 set 欄位名 upper 欄位名 where 查詢條件 查詢 select upper 欄位名 from 表名 upper 把字串c1轉換為大寫 select upper ula from...