A. sql 查詢結果為多列,都是代碼,想返回各列代碼對應的值,怎麼做
方法一:
select a.編號,b.重量單位,c.數量單位,d.國家名稱,e.類別名稱 from a,b,c,d,e
where a.編號 = '002' and a.重量代碼=b.重量代碼 and a.數量代碼=c.數量代碼 and a.數量代碼=d.數量代碼 and a.數量代碼=e.數量代碼
方法二:select 編號,
(select 重量單位 from b where b.重量代碼=abm.重量代碼),
(select 數量單位 from c where c.數量代碼=abm.數量代碼),
(select 國家名稱 from d where d.國家代碼=abm.國家代碼),
(select 類別名稱 from e where e.類別代碼=abm.類別代碼)
from a abm
where abm.編號 = '002'
方法三:編寫sql函數,該函數以表a的重量代碼,數量代碼,國家代碼,類別代碼欄位為參數(只選擇一個),求得相應參數對應的b、c、d、e表中的名稱。
然後就比較簡單了:
select 編號,自定義函數1(重量代碼),自定義函數2(數量代碼),自定義函數3(國家代碼),自定義函數4(類別代碼) from a where 編號 = '002'
這樣看起來就比較清晰!
B. sql執行的條件一樣,只是多了幾個查詢列,為啥效率就變低了
確實會發生這樣的情況,我也有此經歷,發生這樣的狀況是在Oracle資料庫下,而查詢涉及的一個表的數據量很大,假設為A表,在開始的時候並未帶出A的欄位,所以查詢速度還可以;後來查詢帶上A表的一個欄位,執行很久沒有結果。從執行計劃中可以看到,增加欄位前後查詢的執行計劃發生變化了,沒有帶A的欄位時,A表有按索引查詢,而帶A表的欄位之後,A表則未按索引查詢,而是表掃描,這當然很耗時間了!
經過反復試驗都是如此,後來只好改變查詢將獲取A表的欄位放到子查詢中執行,才避免了速度變慢。
對應此種情況,我們一般要改變查詢語句,或者增加索引,以使查詢走索引,這樣才不會效率低下。
C. 當使用pl/sql查詢數據時,如果查詢出來的記錄條數過多而pl/sql無法顯示完全就出現結果溢出怎麼辦
分批顯示,就是一次查出一部分;
或者把結果到文件來看;
或者限制下查詢結果條數
D. sql查詢數量過多的時候,結果數量不對了 select count(name) as zjnum from table where name regexp 'xxx
select count(name)//name-->ID
E. sql查詢 表中一列不重復 顯示多列
CREATE TABLE data (
lx varchar(10),
na varchar(10),
ys varchar(10)
);
INSERT INTO data
SELECT '鞋', '大號', '紅' UNION ALL
SELECT '帽子', '大號', '黑' UNION ALL
SELECT '褲子', '大號', '藍' UNION ALL
SELECT '鞋', '中號', '黑' UNION ALL
SELECT '帽子', '中號', '紅';
SELECT
*
FROM
data
WHERE
NOT EXISTS (
SELECT 1
FROM data sub
WHERE data.ys = sub.ys AND data.lx < sub.lx
)
lx na ys
鞋 大號 紅
褲子 大號 藍
鞋 中號 黑
SELECT
*
FROM
data
WHERE
NOT EXISTS (
SELECT 1
FROM data sub
WHERE data.na = sub.na AND data.lx < sub.lx
)
lx na ys
鞋 大號 紅
鞋 中號 黑
SQL Server 2008 Express 版本下運行通過.
F. SQL查詢時出現了子查詢返回多條記錄是什麼意思啊
SQL查詢時出現了子查詢返回多條記錄意思是符合子查詢查詢條件的有多條記錄。
在SQL語言中,一個SELECT-FROM-WHERE語句稱為一個查詢塊。當獲得一個查詢的答案需要多個步驟的操作,首先必須創建一個查詢來確定用戶不知道但包含在資料庫中的值,將一個查詢塊嵌套在另一個查詢塊的WHERE字句或HAVING短語的條件中查詢塊稱為子查詢或內層查詢。
子查詢的輸出可以包括一個單獨的值(單行子查詢)、幾行值(多行子查詢)、或者多列數據(多列子查詢)。
(6)sql查詢結果列過多擴展閱讀:
子查詢SELECT語句不能包括在ORDER BY子句中。因為ORDER BY字句只能對最終查詢結果排序,如果顯示的輸出需要按照特定順序顯示,那麼ORDER BY子句應該作為外部查詢的最後一個子句列出。
子查詢「必須包括在一組括弧中」,以便將它與外部查詢分開。如果將子查詢放在外部查詢的WHERE或HAVING子句中,那麼該子查詢只能位於比較運算符的「右邊」。
G. SQL項目列表中的列數超過655時,結果查看器無法執行查詢怎麼解決
那就分批來呀,按他們的主鍵排列,確保查詢出來的順序是一致的,然後查詢你需要顯示的列名,剩下的放在第二批查,分別把他們復制粘貼出來就好。
H. sql查詢結果進行多欄位的排序
sql 使用order by 排序
select * from table order by value1,value2 根據欄位value1和value2排序,默認是升序 select * from table order by value1,value2 desc 按照降序排序
I. 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 已贊過
J. SQL查詢結果列過多換行
樓主你的這個問題描述不清晰,首先我從你的希望顯示分析了一下 你的列6-10 都顯示到第二行去了,依據你的顯示結構 列6-10等於變為了列1-5 如果是修改還行 要換的話SQL中實現不了