資料庫cte
A. SQL樹形層級查詢
你好的!
oracle 的start with connect by
別的資料庫用cte 遞歸都能達到你要的效果!
望採納~
B. Oracle資料庫怎麼把兩個表合並成為一個新的表
1、臨時表
WITH CTE AS (
SELECT T1.Sno,T1.Cno, T.Cname,T.Cpno,T.Ccredit,T.Grade
FROM Course T
INNER JOIN SC T1 ON T.Cno =T1.Cno
) SELECT * FROM
2、創建回表答
CREATE TABLE AA AS
SELECT T1.Sno,T1.Cno, T.Cname,T.Cpno,T.Ccredit,T.Grade
FROM Course T
INNER JOIN SC T1 ON T.Cno =T1.Cno
C. sql資料庫查詢問題
CREATE TABLE tb_XMXXTB (
ID INT,
XMBH VARCHAR(20),
XMMC VARCHAR(20),
YZMC VARCHAR(20)
);
GO
INSERT INTO tb_XMXXTB
SELECT 14, 'TB-1109-0002', '項目' , '大地' UNION ALL
SELECT 15, 'TB-1109-0003', '第一項目', '中天'
GO
CREATE TABLE tb_XMXXTB_XMMX (
ID INT,
GG VARCHAR(10),
tb_XMXXTB_ID INT
);
GO
INSERT INTO tb_XMXXTB_XMMX
SELECT 3, 'test2' ,15 UNION ALL
SELECT 4, 'test' ,15 UNION ALL
SELECT 5, '澆築' ,14 UNION ALL
SELECT 6, '同繞' ,14;
GO
With subDataCTE AS(
SELECT
'(' + CAST(ROW_NUMBER() OVER (PARTITION BY tb_XMXXTB_ID ORDER BY ID) as varchar) + ')' + GG AS oneName,
tb_XMXXTB_ID
FROM
tb_XMXXTB_XMMX
),
groupCTE AS(
SELECT
tb_XMXXTB_ID,
STUFF(
(
SELECT
' ' + oneName
FROM
subDataCTE subTitle
WHERE
tb_XMXXTB_ID = subDataCTE.tb_XMXXTB_ID
FOR XML PATH('')
),
1, 1, '') AS Name
FROM
subDataCTE
GROUP BY
tb_XMXXTB_ID
)
SELECT
main.ID,
main.XMBH,
main.XMMC,
main.YZMC,
sub.NAME
FROM
tb_XMXXTB main
JOIN groupCTE sub
ON ( main.ID = sub.tb_XMXXTB_ID)
ID XMBH XMMC YZMC NAME
----------- -------------------- -------------------- -------------------- ---------------------
14 TB-1109-0002 項目 大地 (1)澆築 (2)同繞
15 TB-1109-0003 第一項目 中天 (1)test2 (2)test
(2 行受影響)
D. sqlite 支持cte寫法嗎
Sqlite默認保存數據是用UTF8格式,而現有程序開發工具都是默認GB2312的格式,所以你編程寫的中文不轉碼直接寫到庫里後,用任何資料庫工具看肯定都是亂碼。但是讀出來之後仍然是GB2312,所以顯示正常。反之如果你用資料庫工具寫中文,則默認存UTF8格式,用程序讀出來就是亂碼。也就是說的不可兼得。 如果要實現能夠編程和資料庫工具讀寫都正常,必須要轉碼。也就是說,保存時候,要把GB2312轉成UTF8,而讀出時候需要把UTF8在轉成GB2312。 網上有源程序可用,叫做CCodingConv的類,你搜一個源碼,在每次執行SQL語句之前,將其轉換一下即可。將整個SQL語句進行轉換,E文的會保持不變,而中文的會自動轉換成合適的編碼,執行即可實現要求。
E. 如何利用ddl語句文件常見資料庫表
具體而言,關於表的相關操作如下:
1,創建表的方法
2,表的完整性約束條件
3,查看錶結版構的方權法
4,修改表的方法
5,刪除表的方法
上面羅列的這些都會一一的整理到。OK,現在我們開始第一篇,創建表。
創建表是指在已存在的資料庫中創建新表,這是建立資料庫最重要的一步,是進行其他表操作的基礎。MySQL中創建表通過sql語句CREATE TABLE實現,具體語法形式如下:
CREATE TABLE 表名(屬性名 數據類型[完整性約束條件],
屬性名 數據類型[完整性約束條件],
......
屬性名 數據類型);
1,『表名』參數表示所要創建表的名稱,『屬性名』參數表示表中欄位的名稱,『數據類型』參數指定欄位的數據類型,『完整性約束條件』參數指定欄位的某些特殊約束條件。
2,在使用CTEATE TABLE語句創建表時,首先要使用USE語句選擇資料庫,USE 資料庫名。如果沒有選擇資料庫,創建表時會出現『No database selected』錯誤。
F. db2資料庫sql語句遍歷一張父子節點相關聯的表,運用CTE演算法
CreateTableemp
(
IDint,
parentIDint
)
insertintoempvalues(1,0)
insertintoempvalues(5,3)
insertintoempvalues(3,1)
insertintoempvalues(4,2)
insertintoempvalues(2,1)
--按id拼個路徑出來,然後按路徑排序即可
--這是mssql的寫法,db2我不知道
--searchBREADTHfirstbyIDsetsort,估計是按用來產生排序的
WithReport(ParentID,ID,Level)
As
(
SelectparentID,ID,Convert(Varbinary(Max),id)
FromempWhereparentID='0'
UnionAll
Selectemp.parentID,emp.ID,Level+Convert(Varbinary,emp.id)
FromreportJoinemp
Onemp.parentID=report.ID
)
SelectID,parentIDFromreport
OrderByLevel
--或者
WithReport(ParentID,ID,Level)
As
(
SelectparentID,ID,Convert(Varchar(Max),Right('00000'+id,5))
FromempWhereparentID='0'
UnionAll
Selectemp.parentID,emp.ID,Level+'-'+Convert(Varchar(Max),Right('00000'+emp.id,5))
FromreportJoinemp
Onemp.parentID=report.ID
)
SelectID,parentIDFromreport
OrderByLevel