⑴ 怎麼用sql語句查詢存在於表a而不存在於表b的數據
第一個問題:select name1 from 表a minus select name1 from 表b
第二個問題:select a.*,b.* from 表a a,表b b where a.name1=b.name1
⑵ 用sql語句查找一個欄位值存在於哪張表,該怎麼寫SQL語句
這需要用存儲過程來實現,基本方法如下,比如查找全庫中所有欄位值為「張三」的屬於哪張表,可用如下方法:
declare@cloumnsvarchar(40)
declare@tablenamevarchar(40)
declare@strvarchar(40)
declare@countsint
declare@sqlnvarchar(2000)
declareMyCursorCursorFor
Selecta.nameasColumns,b.,sysobjectsb,systypesc
wherea.id=b.id
andb.type='U'
anda.xtype=c.xtype
andc.namelike'%char%'
set@str='張三'
OpenMyCursor
FetchnextFromMyCursorInto@cloumns,@tablename
While(@@Fetch_Status=0)
Begin
set@sql='select@tmp_counts=count(*)from'+@tablename+'where'+@cloumns+'='''+@str+''''
executesp_executesql@sql,N'@tmp_countsintout',@countsout
if@counts>0
begin
print'表名為:'+@tablename+',欄位名為'+@cloumns
end
FetchnextFromMyCursorInto@cloumns,@tablename
End
CloseMyCursor
DeallocateMyCursor
結果如圖:
顯示的就是含有張三這個內容的表名及欄位名
⑶ sql語句,查詢表A,判斷表A是否有數據,有則連同查出表C的數據,沒有則
這個可以下列SQL語句予以實現
selectcol1,col2,col3fromAwhere
exists(select1fromA)
union
selectcol1,col2,col3fromBwhere
notexists(select1fromA)
union
selectcol1,col2,col3fromC;
如果ABC三表數據結構一樣,可用*號取代輸出欄位列表
請參見下列實驗結果
⑷ sql語句中查詢含有a數據的列數,b數據的列數,c數據的列數
select count(a) as 'count(a)',
count(b) as 'count(b)',
count(c) as 'count(c)'
from t1
這樣就行了啊。
count(a),他只計算a不為空的列數。結果是2.
⑸ SQL 如何查出表A中全部數據並且根據表A的ID在表B中的出現次數排序。
select a.* from a inner join (select b.aid id, count(*) counts from b group by b.aid) tmp on a.id = tmp.id order by tmp.counts
select a.* from a inner join (select a.id id, count(*) counts from a left join b on a.id=b.aid group by a.id) tmp on a.id = tmp.id order by tmp.counts
select a.* from a left join (select b.aid id, count(*) counts from b group by b.aid) tmp on a.id = tmp.id order by isnull(tmp.counts, 0)
⑹ SQL中如何查詢A表全部數據與A表有關聯的B表部分數據
1、創建測試表,
create table test_col_1(id number, var varchar2(200));
create table test_col_2(id number, var varchar2(200));
⑺ SQL中如何查詢A表中的數據有部分存在B表中並顯示出來
SQL中查詢A表中的數據有部分存在B表中並顯示出來,可以參考下面幾種方法:
1、select*fromB表whereitem_noin(select條碼fromA表)
2、select*fromA表,B表whereA表.條碼=B表.item_no
(7)sql語句查詢存在於表a的數據擴展閱讀:
SQL參考語句
刪除表
drop table tabname--這是將表連同表中信息一起刪除但是日誌文件中會有記錄
刪除信息
delete from table_name-這是將表中信息刪除但是會保留這個表
增加列
Alter table table_name add column_name column_type [default 默認值]--在表中增加一列
⑻ 如何查詢sql2000資料庫中所有表中帶有a的數據
COL_NAME
返回資料庫列的名稱,該列具有相應的表標識號和列標識號。
語法
COL_NAME ( table_id , column_id )
參數
table_id
包含資料庫列的表的標識號。table_id 屬於 int 類型。
column_id
列的標識號。column_id 參數屬於 int 類型。
返回類型
sysname
注釋
table_id 和 column_id 參數共同產生一個列名稱字元串。
有關獲得表和列標識號的更多信息,請參見 OBJECT_ID。
示例
下面的示例返回 Northwind 資料庫的 Employees 表中的首列的名稱。
USE Northwind
SET NOCOUNT OFF
SELECT COL_NAME(OBJECT_ID('Employees'), 1)
下面是結果集:
EmployeeID
(1 row(s) affected)
⑼ 下面哪個sql語句可以查詢出"id存在於a表
兩個表A和B,A表如下:A_idnameitem(項目)need_pay(需付金額)101張三a300102張三b200103李四a500……表
⑽ SQL中,如何查詢存在一個表而不在另一個表中的數據記錄
首先,在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()可以去除右側的空格,也就是說我們是對去除空格後的企業名稱進行比較,排除了空格的干擾。
(10)sql語句查詢存在於表a的數據擴展閱讀:
在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