㈠ 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語句如何查詢一個表中某兩個欄位的相同數據
查詢一個表中某兩個欄位的相同數據代碼是: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 tableA.column1,tableA.column2 from tableA ,ableB where tableA .column1=tableB .column1
或者使用 union 方法,注意兩個表選出來的欄位至少要格式相同
select column1,column2,column3 from tableA
union
select column1,column2,column3 from tableB
㈣ 如何用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語句查詢兩張表中的相同欄位數據
假設表1為table1 ,表2為table2
select a.col
from (select column_name col from user_tab_columns where table_name = 'table1') a ,
(select column_name col from user_tab_columns where table_name = 'table2') b
where a.col = b.col
這樣就可以查詢出兩個表得相同欄位了
㈥ 如何查詢sql表中2個欄位分別相同的記錄
需要用連接查詢來處理。
如有以下2張表:
查詢2張表id和name欄位內容完全相同的內容,可用如下語句:
1
select a.* from test a,test1 b where a.id=b.id and a.name=b.name;
結果:
說明,兩表連接where條件要寫上關聯條件,因為提問是兩個欄位完全相等,所以就寫作:a.id=b.id and a.name=b.name
㈦ 如何用SQL語句查詢兩張表中的相同欄位數據
假設表1位table1
,表2位table2
select
a.col
from
(select
column_name
col
from
user_tab_columns
where
table_name
=
'table1')
a
,
(select
column_name
col
from
user_tab_columns
where
table_name
=
'table2')
b
where
a.col
=
b.col
這樣就可以查詢出兩個表得相同欄位了
㈧ 如何用sql語句查詢兩張表中的相同欄位數據
select * from A inner join b on a.col=b.col
除了我們在上面的例子中使用的 INNER JOIN(內連接),我們還可以使用其他幾種連接。
下面列出了您可以使用的 JOIN 類型,以及它們之間的差異。
JOIN: 如果表中有至少一個匹配,則返回行
LEFT JOIN: 即使右表中沒有匹配,也從左表返回所有的行
RIGHT JOIN: 即使左表中沒有匹配,也從右表返回所有的行
FULL JOIN: 只要其中一個表中存在匹配,就返回行
㈨ sql查詢按兩個欄位查詢重復記錄
用關鍵字 stinct,select stinct 欄位,是不重復的意思。代碼的實例如下:
查詢order_id和loan_lind兩個欄位相同的記錄:
select distinct a.order_preview_id, a.order_id, a.loan_kind
from ddk_order_preview_info a
join ddk_order_preview_info b
on a.order_preview_id != b.order_preview_id
where a.order_id = b.order_id and a.loan_kind = b.loan_kind;
(9)sql查詢兩個欄位相同的擴展閱讀
SQL資料庫查詢出一張表中重復的數據,按某個欄位來查找的實例:
例如表名為Course:
補充:
如:查詢每個姓名出現大於2次,SQL如下
SELECT COUNT(NAME) as '出現次數', NAME FROM 表名
GROUP BY NAME HAVING count(NAME) > 2 ORDER BY 出現次數 DESC
㈩ sql 多表查詢兩個相同欄位的表
給每個表取別名,查詢的時候用別名[點]例如 select a.name from A a left join B b on a.id=b.id