select
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設(shè)、高性價(jià)比大同網(wǎng)站開(kāi)發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫(kù),直接使用。一站式大同網(wǎng)站制作公司更省心,省錢(qián),快速模板網(wǎng)站建設(shè)找我們,業(yè)務(wù)覆蓋大同地區(qū)。費(fèi)用合理售后完善,十年實(shí)體公司更值得信賴。
goods_name?產(chǎn)品名字,
max(price)?價(jià)格,
max(case?rank_name?when?'VIP1'?then?(case?when?user_price?is?null?then?discount*price/100?else?user_price?end)?end)?vip1價(jià)格,
max(case?rank_name?when?'VIP2'?then?(case?when?user_price?is?null?then?discount*price/100?else?user_price?end)?end)?vip2價(jià)格,
max(case?rank_name?when?'VIP3'?then?(case?when?user_price?is?null?then?discount*price/100?else?user_price?end)?end)?vip3價(jià)格
from?member_price?mp
left?join?goods?gd?on?gd.goods_id?=?mp.goods_id
left?join?user_rank?ur?on?ur.rank_id?=?mp.rank_id
group?by?goods_name;
mysql不是很熟悉,所以寫(xiě)了個(gè)標(biāo)準(zhǔn)sql語(yǔ)法的。我記得mysql中g(shù)roup by的select可以不用跟聚合函數(shù)的,所以LZ大概可以把max()去掉,而mysql中好像有isnull,ifnull的函數(shù),我不太了解,這里用case語(yǔ)句替代了,LZ可以自行替換。
import_table(importTable) 的延申功能:可定制化行輸入。
import_table(importTable) 我們之前有介紹過(guò),是一款并行導(dǎo)入各種格式文本的工具,封裝了 MySQL 語(yǔ)句?load data local infile。
比如說(shuō)要導(dǎo)入一個(gè)以 TAB 為分隔符的文本數(shù)據(jù)文件:/tmp/sample_ytt.txt?到表:ytt_new.t1,可以執(zhí)行下面語(yǔ)句:
上面結(jié)果是?load data infile?語(yǔ)句的導(dǎo)入結(jié)果。如果改用 import_table 方法來(lái)做同樣的事情,基于 Python 語(yǔ)法,使用方法如下:
那接下來(lái)看另外一個(gè)需求:在導(dǎo)入文本文件時(shí)對(duì)每行做預(yù)處理(例如在導(dǎo)入數(shù)據(jù)之前更改列 r2 的值為 mod(r1,10),列 r5 的值為 abs(r4-46) ),這樣可以減少導(dǎo)入后再次處理的時(shí)間開(kāi)銷。
這個(gè)需求用?load data infile?語(yǔ)句非常容易實(shí)現(xiàn):(導(dǎo)入時(shí)更改列 r2 和 r5 的數(shù)據(jù),類似 UPDATE 語(yǔ)法)
那如果要用 util.import_table(importTable) 來(lái)實(shí)現(xiàn)上面的需求,在 MySQL 8.0.22 之前是沒(méi)辦法的。
隨著 MySQL 8.0.22 的發(fā)布,MySQL 對(duì) import_table 方法做了些擴(kuò)充功能,其中增加了一個(gè)選項(xiàng) “decodeColumns” 可以實(shí)現(xiàn)字段的預(yù)先輸入定制化功能,并且還可以更加豐富。
接下來(lái)用 import_table 來(lái)實(shí)現(xiàn)上面的需求,定制化字段 r2 和 r5:
以上 Options 選項(xiàng),見(jiàn)下圖:
我來(lái)具體解釋下上圖的含義:藍(lán)色字體 columns 對(duì)應(yīng)的數(shù)組分別指定數(shù)據(jù)文件中的每行字段,也就是默認(rèn)的 TAB 分隔符所分割的每列值,1 和 2 代表占位符,1 代表數(shù)據(jù)文件中每行的第一個(gè)列,2 代表數(shù)據(jù)文件中每行的第四列,decodeColumns 字典分別對(duì)需要預(yù)先輸入的字段做處理。比如 r1 字段保留為變量 @1,r2 字段對(duì)應(yīng) mod(r1,10) 等。
如果還是不太理解變換規(guī)則,可以臨時(shí)打開(kāi) general log, 上面 import_table(importTable)對(duì)應(yīng)的 MySQL 日志為:
以上日志寫(xiě)的很清楚,內(nèi)部轉(zhuǎn)換為最基本的load data infile語(yǔ)法。
那這里我簡(jiǎn)單解讀了下 MySQL 8.0.22 對(duì) MySQL Shell 的一項(xiàng)定制化輸入文本文件的新特性,更多的新特性可以繼續(xù)關(guān)注。
MySQL ?好像沒(méi)有那種 ?輸出的語(yǔ)句。
可以嘗試使用 ?SELECT ?來(lái)輸出信息。
例如:
mysql DELIMITER //
mysql CREATE PROCEDURE HelloWorld1(vUserName VARCHAR(10))
- BEGIN
-?? SELECT CONCAT('Hello ', vUserName);
- END//
Query OK, 0 rows affected (0.00 sec)
mysql call HelloWorld1('Edward');
- //
+-----------------------------+
| CONCAT('Hello ', vUserName) |
+-----------------------------+
| Hello Edward??????????????? |
+-----------------------------+
1 row in set (0.00 sec)
Query OK, 0 rows affected (0.02 sec)
查看某個(gè)表的建表語(yǔ)句,可以使用phpmyadmin查看,首先選擇這個(gè)表所在的數(shù)據(jù)庫(kù),比如:ecshop庫(kù),里面有個(gè)ecs_goods表,那么查看goods表的建表語(yǔ)句為:
show create
table ecs_goods
把這條sql語(yǔ)句復(fù)制到
點(diǎn)擊執(zhí)行,ok結(jié)果就出來(lái)了:
把顯示的結(jié)果復(fù)制到其它機(jī)器上運(yùn)行,就建好一張goods表了
當(dāng)前名稱:mysql輸出語(yǔ)句怎么寫(xiě) mysql輸出當(dāng)前用戶
文章鏈接:http://vcdvsql.cn/article34/ddcoope.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供App設(shè)計(jì)、ChatGPT、網(wǎng)站設(shè)計(jì)公司、全網(wǎng)營(yíng)銷推廣、搜索引擎優(yōu)化、企業(yè)網(wǎng)站制作
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)