⑴ sql語句怎麼處理兩個不同欄位鏈接同一個表的情況
selectc.id,a.公司名稱AS甲方公司,b.公司名稱AS乙方公司,c.合同編號
fromUnita,Unitb,Contractc
wherea.id=c.甲方IDandb.id=c.乙方ID
就是說一個UNIT表要同時被關聯2次,一次為甲用,一次為乙用
⑵ sql 連接兩個表,但有兩個欄位名重復,調出問題
不對,你應該使用表鏈接
select B.[name] from a A left join b B
on A.tid=B.tid where A.parentid=1
⑶ 能不能用sql語句將兩張欄位相同的表連接起來
select * from 表1 where 條件 union select * from 表2 where 條件
⑷ SQL語句中兩個表的連接
1、打開資料庫管理工具,在資料庫中新建兩個表用於測試,這里,兩個表的表結構要一樣,分別建立TEST 和 TEST1。
⑸ sql語句如何查詢一個表中某兩個欄位的相同數據
查詢一個表中某兩個欄位的相同數據代碼是:Select Name,ID From A group by Name,ID having count (*)>1。
結構化查詢語言(Structured Query Language)簡稱SQL,結構化查詢語言是一種資料庫查詢和程序設計語言,用於存取數據以及查詢、更新和管理關系資料庫系統;
sql 語句就是對資料庫進行操作的一種語言。
sql="select * from 數據表 where欄位名=欄位值 order by欄位名[desc]"(按某個欄位值降序排列,默認升序ASC);
sql="select * from 數據表 where欄位名like '%欄位值%' order by 欄位名 [desc]";
sql="select top 10 * from 數據表 where欄位名=欄位值 order by 欄位名 [desc]";
sql="select top 10 * from 數據表 order by 欄位名 [desc]";
sql="select * from 數據表 where欄位名in ('值1','值2','值3')";
sql="select * from 數據表 where欄位名between 值1 and 值2"。
sql語句:
更新:update table1 set field1=value1 where 范圍;
查找:select * from table1 where field1 like '%value1%' (所有包含'value1'這個模式的字元串);
排序:select * from table1 order by field1,field2 [desc];
求和:select sum(field1) as sumvalue from table1;
平均:select avg(field1) as avgvalue from table1;
最大:select max(field1) as maxvalue from table1;
最小:select min(field1) as minvalue from table1[separator]。
⑹ SQL一個表裡有另一個表裡兩個相同欄位.
select a.name as 操作人,b.name as 被操作人
from cz
left join stu a on a.id=cz.czid
left join stu b on b.id=cz.bczid
⑺ 請教下:關於sql方面,我想做多表連接查詢,是不是兩個表之間必須要有相同欄位呢才能連接查詢呢
可以這樣,連接用欄位只是要求數據類型兼容就可以了,你的可以連接,但是結果可能很荒唐或者為空集,大多數情況下連接欄位都是主碼和外碼,但是用於比較的等值與不等值連接沒有這個習慣
⑻ 如何用SQL語句將表中兩個欄位相同的記錄取出
sql語句同步兩個表中的欄位值需要用觸發器來實現。如有兩張表——a表和b表,創建觸發器使當a表插入數據後b表也同步插入數據。其中b表插入數據的欄位需要同a表中的欄位相對應。create
trigger
觸發器名稱
on
a表after
insert
as
begin
insert
into
b表(b表欄位1,b表欄位2,b表欄位3)select
a表欄位1,a表欄位2,a表欄位3
from
insertedend
⑼ sql查詢兩個欄位相同的記錄
EXCEL中用VBA連接ACCESS資料庫
有如下一張表,要分別查找出所有同名的人、所有同名並且學號也一樣的人以及所有同名但不同學號的人。
查詢所有同名人員
select * from [18年考試成績] where [姓名] in (SELECT [姓名] FROM [18年考試成績] group by [姓名] having count(姓名)>1)
查詢結果:
查找所有姓名和學號兩個欄位都重復的人
select * from [18年考試成績] where [姓名] in (SELECT [姓名] FROM [18年考試成績] group by [姓名] having count(姓名)>1) and [學號] in (SELECT [學號] FROM [18年考試成績] group by [學號] having count(學號)>1)
查詢結果:
查找所有姓名重復但學號不重復的人
select * from [18年考試成績] where [姓名] in (SELECT [姓名] FROM [18年考試成績] group by [姓名] having count(姓名)>1) and [學號] not in (SELECT [學號] FROM [18年考試成績] group by [學號] having count(學號)>1)
注意:要把SELECT查詢子句配合in或not in 操作符使用,SELECT查詢子句只能有一列內容。
查詢結果:
其中子句 「SELECT [姓名] FROM [18年考試成績] group by [姓名] having count(姓名)>1」是顯示所有重復的姓名,如果如下:
如果要知道重復出現次數,則可以這樣寫:
SELECT [姓名],count(姓名) as 出現次數 FROM [18年考試成績] group by [姓名] having count(姓名)>1
結果如下:
查找唯一記錄
group by [姓名],意思是按姓名分組,having count(姓名)>1 是分組條件,意思是姓名次數出現2次以上的重復內容以姓名進行分組,前面的count(姓名)是對分組以後的姓名統計出現次數。在後面要使用函數條件時應該使用having,而不是使用where
查找唯一值,比如本例的班級中,只有一個「四班」,要把這個四班的所有欄位顯示出來可以這樣:
select * from [18年考試成績] where 班級 not in (SELECT 班級 FROM [18年考試成績] group by 班級 having count(班級)>1)
結果:
如果使用「SELECT DISTINCT 班級 FROM [18年考試成績]」語句查詢唯一值,結果將會如下:
DISTINCT 會顯示不重復的值,如果有重復的,只顯示第一個,所以如果需要顯示僅出現一次的值並不適合使用SELECT DISTINCT語句
分組查詢語句:
比如要班級為單位,查詢每個班的總人數,科目總分,科目平均分等
SELECT [班級],count(姓名) as 班級人數,sum(語文) as 語文總成績,sum(數學) as 數學總成績,ROUND(avg(語文),1) as 語文平均分,ROUND(avg(數學),1) as 數學平均分 FROM [18年考試成績] group by [班級]
查詢結果如下:
注意:如果使用函數的欄位,不使用AS指定別名,將會自動生成一個欄位名,第一列名字Expr1000,第二列名為Expr1001,第三列名為Expr1002,以此類推
如:
SELECT [班級],count(姓名),sum(語文),sum(數學),ROUND(avg(語文),1) ,ROUND(avg(數學),1) FROM [18年考試成績] group by [班級]
查詢結果如下:
如果不指定別名,你將無法清楚在查詢結果中知道每一列是干什麼的。
如果需要再細分,查詢每個班女生總人數和科目平均分,只需要再加一個where條件就可以了
SELECT [班級],count(姓名) as 班級女性人數,ROUND(avg(語文),1) as 語文平均分,ROUND(avg(數學),1) as 數學平均分 FROM [18年考試成績] where 性別='女' group by [班級]
⑽ SQL查詢2個表中有2個相同的欄位
select * from A,B where A.M=B.M and A.N=B.N