當前位置:首頁 » 編程語言 » sql多列怎麼找
擴展閱讀
webinf下怎麼引入js 2023-08-31 21:54:13
堡壘機怎麼打開web 2023-08-31 21:54:11

sql多列怎麼找

發布時間: 2023-07-01 07:41:18

① 如何解決sql語句中的動態多列查詢問題

select sum(case when con1||con2='11' then count else 0 end) 三星筆記本,
sum(case when con1||con2='12' then count else 0 end) 三星台式機,
sum(case when con1||con2='22' then count else 0 end) 蘋果筆記本,
sum(case when con1||con2='22' then count else 0 end) 蘋果台式機
from table_name

另外用decode一樣可以替代case when,效率一樣

② 怎麼查詢SQL資料庫中一行多列的數據中最大值

1、下載phpStudy,並且按照步驟安裝。

③ SQL中的Group By的查詢過程多列分組的查詢過程是怎樣的

Group By子句
Group By子句可以將表的行劃分為不同的組。分別總結每個組,這樣就可以控制想要看見的詳細信息的級別。

語法:

[ Group By [ ALL ] Group_By_expression[ ,...n ]

[ WITH { CUBE | ROLLUP } ] ]

參數說明:

ALL:包含所有組和結果集,甚至包含那些任何行都不滿足WHERE子句指定的搜索條件的組和結果集。如果指定了ALL,將對組中不滿足搜索條件的匯總列返回空值。不能用CUBE或ROLLUP運算符指定ALL。如果訪問遠程表的查詢中有WHERE子句,則不支持Group By ALL操作。

Group_By_expression:對其執行分組的表達式。Group_By_expression也稱為分組列。Group_By_expression可以是列或引用列的非聚合表達式。在選擇列表內定義的列的別名不能用於指定分組列。對於不包含CUBE或ROLLUP的Group By子句,Group_By_ expression的項數受查詢所涉及的Group By列的大小、聚合列和聚合值的限制。該限制從8060位元組的限制開始,對保存中間查詢結果所需的中間級工作表有8060位元組的限制。如果指定了CUBE或ROLLUP,則最多隻能有10個分組表達式。

CUBE:指定在結果集內不僅包含由Group By提供的正常行,還包含匯總行。在結果集內返回每個可能的組和子組組合的Group By匯總行。Group By匯總行在結果中顯示為NULL,但可用來表示所有值。使用GroupING函數確定結果集內的空值是否是Group By匯總值。結果集內的匯總行數取決於Group By子句內包含的列數。Group By子句中的每個操作數(列)綁定在分組NULL下,並且分組適用於所有其他操作數(列)。由於CUBE返回每個可能的組和子組組合,因此,不論指定分組列所使用的是什麼順序,行數都相同。

ROLLUP:指定在結果集內不僅包含由Group By提供的正常行,還包含匯總行。按層次結構順序,從組內的最低級別到最高級別匯總組。組的層次結構取決於指定分組列時所使用的順序。更改分組列的順序會影響在結果集內生成的行數。

使用Group By子句的注意事項。

(1)在SELECT子句的欄位列表中,除了聚集函數外,其他所出現的欄位一定要在Group By子句中有定義才行。例如「Group By A,B」,那麼「SELECT SUM(A),C」就有問題,因為C不在Group By中,但是SUM(A)是可以的。

(2)SELECT子句的欄位列表中不一定要有聚集函數,但至少要用到Group By子句列表中的一個項目。例如「Group By A,B,C」,則「SELECT A」是可以的。

(3)在SQL Server中text、ntext和image數據類型的欄位不能作為Group By子句的分組依據。

(4)Group By子句不能使用欄位別名。
1.按單列進行分組

Group By子句可以基於指定某一列的值將數據集合劃分為多個分組,同一組內所有記錄在分組屬性上具有相同值。

示例:

把「student」表按照「性別」這個單列進行分組。在查詢分析器中輸入的SQL語句如下:

use student

select 性別

from student

Group By 性別

但仍然要強調SELECT子句必須與Group By後的子句或者是分組函數列相一致。

例如,由於下列查詢中「姓名」列既不包含在Group By子句中,也不包含在分組函數中,所以是錯誤的。錯誤的SQL語句如下:

use student select 姓名,性別 from student Group By 性別

例如,在「grade」表中,按「學期」分組查詢。SQL語句如下:

use studnet select 學期 from grade Group By 學期

2.按多列進行分組

Group By子句可以基於指定多列的值將數據集合劃分為多個分組。

示例:

在「student」表中,按照「性別」和「年齡」列進行分組。在查詢分析中輸入的SQL語句如下:

use student

select 性別,年齡

from student

Group By 性別,年齡

在「student」表中,首先按照「性別」分組,然後再按照「年齡」分組。

再舉一個例子,例如,在「grade」表中,按照「學號」和「課程代號」列進行分組。SQL語句如下:

use student

select 學號,課程代號 from grade Group By 學號,課程代號

按多列進行分組時有NULL組的是如何處理的。當表按多列進行分組時有NULL組,這時NULL被作為一個特定值處理,就像其他任何值一樣。也就是說,如果在某個分組列中存在兩個NULL,則按它們有相同的值那樣處理,並將它們放在相同的組中。

示例:

在「grade」表中,按「學期」和「課程代號」列進行分組。在查詢分析器中輸入的SQL語句如下:

use student

select 學期,課程代號

from grade

Group By 學期,課程代號

3.與聚集函數一起使用

Group By子句是經常與聚集函數一起使用。如果SELECT子句中包含聚集函數,則計算每組的匯總值,當用戶指定Group By時,選擇列表中任一非聚集表達式內的所有列都應包含在Group By列表中,或者Group By表達式必須與選擇列表表達式完全匹配。

示例:

在「student」表中,分別求男女生的平均年齡。在查詢分析器中輸入的SQL語句如下:

use student

select 性別,avg(年齡) as 平均年齡

from student

Group By 性別

例如,在「student」表中,分別求有多少個男生和女生。SQL語句如下:

use student

select 性別,count(性別) as 人數 from student Group By 性別

說明:關於聚合函數的詳細講解可參閱9.2.1節。

4.與HAVING子句一起使用

HAVING子句對Group By子句選擇出來的結果進行再次篩選,最後輸出符合HAVING子句中條件的記錄。HAVING子句的語法與WHERE子句的語法相類似,惟一不同的是HAVING子句中可以包含聚合函數。

語法:

[HAVING <search_condition>]

參數說明:

<search_condition>:指定組或聚合應滿足的搜索條件。當HAVING與Group By ALL一起使用時,HAVING 子句替代ALL。

示例:

在「student」表中,按「性別」分組求平均年齡,並且查詢其平均年齡大於21的學生信息。在查詢分析器中輸入的SQL語句如下:

use student

select avg(年齡), 性別

from student

Group By 性別

having avg(年齡)>21

在「grade」表中,按「學期」分組求平均成績,並且查詢「平均成績」大於93的課程信息。在查詢分析器中輸入的SQL語句如下:
+1 已贊過

④ sql怎麼查詢資料庫表有多少列

看具體是什麼資料庫,以oracle,mysql,sqlserver分別回答。
1、oracle:

1

select count(*) from user_tab_cols where table_name='表名';--表名含英文的話應為英文大寫字母

結果如圖:

2、mysql:

1

select count(*) from information_schema.COLUMNS where table_name='表名';--表名大小寫均可

結果如圖:

3、sqlserver:

1

select count(*) from syscolumns s where s.id = object_id('test');--表名大小寫均可

結果如圖:

⑤ sql 查詢滿足條件的多列

只能通過union all連接,如:
select a from table
where a like ''
union alll
select b from table
where b like ''
union alll
select c from table
where c like ''
union alll
select d from table
where d like ''

⑥ SQL語言如何查詢所有表的指定列

比如說你這個數據表中有多個欄位即多列:姓名、學號、班級、性別、年齡等等等
你現在只需要查詢所有表中的姓名,那SQL語句就應該這樣寫
SELECT 姓名 FROM 表名 //這樣即可

⑦ sql怎麼查詢一個資料庫所有表列數

--讀取庫中的所有表名
select name from sysobjects where xtype='u'
--讀取指定表的所有列名
select name from syscolumns where id=(select max(id) from sysobjects where xtype='u' and name='表名')
獲取資料庫表名和欄位
sqlserver中各個系統表的作用
sysaltfiles 主資料庫 保存資料庫的文件
syscharsets 主資料庫 字元集與排序順序
sysconfigures 主資料庫 配置選項
syscurconfigs 主資料庫 當前配置選項
sysdatabases 主資料庫 伺服器中的資料庫
syslanguages 主資料庫 語言
syslogins 主資料庫 登陸帳號信息
sysoledbusers 主資料庫 鏈接伺服器登陸信息
sysprocesses 主資料庫 進程
sysremotelogins主資料庫 遠程登錄帳號
syscolumns 每個資料庫 列
sysconstrains 每個資料庫 限制
sysfilegroups 每個資料庫 文件組
sysfiles 每個資料庫 文件
sysforeignkeys 每個資料庫 外部關鍵字
sysindexs 每個資料庫 索引
sysmenbers 每個資料庫 角色成員
sysobjects 每個資料庫 所有資料庫對象
syspermissions 每個資料庫 許可權
systypes 每個資料庫 用戶定義數據類型
select 列名=name from syscolumns where id=object_id(N'要查的表名')

⑧ sql語句如何實現實現查詢多列的數據

可以,我看Id列應該是唯一的吧。根據proctID分組的時候,取max(id),然後通過此id關聯,就可以把其他列數據也查詢出來了