SQL中使用WITH 語句的查詢
sql with as 用法(適用sqlserver,好像oracle也適用)Server 2005中提供了公用表表達式(CTE),使用CTE,可以使SQL語句的可維護性,同時,CTE要比表變量的效率高得多。
下面是CTE的語法: [ WITH
如下面的SQL語句將無法正常使用CTE: with cr as ( select CountryRegionCode from *yRegion where Name like 'C%' ) select * from *yRegion -- 應將這條SQL語句去掉 -- 使用CTE的SQL語句應緊跟在相關的CTE后面 -- select * from *rovince where CountryRegionCode in (select * from cr) 2. CTE后面也可以跟其他的CTE,但只能使用一個with,多個CTE中間用逗號(,)分隔,如下面的SQL語句所示: with cte1 as ( select * from table1 where name like 'abc%' ), cte2 as ( select * from table2 where id > 20 ), cte3 as ( select * from table3 where price < 100 ) select a.* from cte1 a, cte2 b, cte3 c where * = * and * = * 3. 如果CTE的表達式名稱與某個數據表或視圖重名,則緊跟在該CTE后面的SQL語句使用的仍然是CTE,當然,后面的SQL語句使用的就是數據表或視圖了,如下面的SQL語句所示: -- table1是一個實際存在的表 with table1 as ( select * from persons where age < 30 ) select * from table1 -- 使用了名為table1的公共表表達式 select * from table1 -- 使用了名為table1的數據表 4. CTE 可以引用自身,也可以引用在同一 WITH 子句中預先定義的 CTE。不允許前向引用。
5. 不能在 CTE_query_definition 中使用以下子句: (1)COMPUTE 或 COMPUTE BY (2)ORDER BY(除非指定了 TOP 子句) (3)INTO (4)帶有查詢提示的 OPTION 子句 (5)FOR XML (6)FOR BROWSE 6. 如果將 CTE 用在屬于批處理的一部分的語句中,那么在它之前的語句必須以分號結尾,如下面的SQL所示: declare @s nvarchar(3) set @s = 'C%' ; -- 必須加分號 with t_tree as ( select CountryRegionCode from *yRegion where Name like @s ) select * from *rovince where CountryRegionCode in (select * from t_tree) 7、CTE除了可以簡化嵌套SQL語句外,還可以進行遞歸調用。
MYSQL group by 語句中的with rollup是用來干什么的
或者你可以使用 ROLLUP, 它能用一個問詢提供雙層分析。將一個 WITH ROLLUP修飾符添加到GROUP BY 語句,使詢問產生另一行結果,該行顯示了所有年份的總價值:
mysql> SELECT year, SUM(profit) FROM sales GROUP BY year WITH ROLLUP;
+------+-------------+
| year | SUM(profit) |
+------+-------------+
| 2000 | 4525 |
| 2001 | 3010 |
| NULL | 7535 |
+------+-------------+
總計高聚集行被年份列中的NULL值標出。
db2語句轉mysql語句時,db2語句的with ur怎么處理
db2的merge into語句怎么改寫成mysql的?
本處使用 db2 –t 進入系統。
-- 源表
db2 => CREATE TABLE test_from (id INT, val VARCHAR(20));
DB20000I SQL 命令成功完成。
-- 目標表
db2 => CREATE TABLE test_to (id INT, val VARCHAR(20));
DB20000I SQL 命令成功完成。
-- 插入源表
db2 => INSERT INTO test_from VALUES (1, 'A');
DB20000I SQL 命令成功完成。
db2 => INSERT INTO test_from VALUES (2, 'B');
DB20000I SQL 命令成功完成。
怎么連接MYSQL數據庫和執行SQL語句
首先創建連接
就創建個Cnnection對象,然后把驅動加上,還有帳號密碼什么的!我沒連過sql數據庫,不知道驅動,你可以在網上搜一下。
給你一個我連接mysql數據庫的例子
public Connection Getdata(){//這是連接數據庫的一個方法,還可以配置連接池。
Connection con=null;
try {
*e("*");//加驅動
con=*nection("jdbc:mysql://localhost:3306/data","root","qq");//數據庫路徑、端口、庫名、數據庫用戶名和密碼
} catch (ClassNotFoundException e) {
*tackTrace();
} catch (SQLException e) {
*tackTrace();
}
return con;
}
public void delete(int id){//對數據庫進行操作的方法,先調用上面寫好的連接!
Connection con=Getdata();
Statement st;
try {
st=*Statement();
*eUpdate("delete from kaoshi where id="+id);
} catch (SQLException e) {
// TODO Auto-generated catch block
*tackTrace();
}
}
轉載請注明出處華閱文章網 » mysqlwith語句