一、為什么mysql having的條件表達(dá)式可以直接使用select后的別名
SQL語(yǔ)句的語(yǔ)法順序:
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> UNION -> ORDER BY
因此一般不能在having condition中使用select list中的alias。但是mysql對(duì)此作了擴(kuò)展。
在mysql 5.7.5之前的版本,ONLY_FULL_GROUP_BY sql mode默認(rèn)不開啟。在5.7.5或之后的版本默認(rèn)開啟。
如果ONLY_FULL_GROUP_BY sql mode不開啟,那么mysql對(duì)標(biāo)準(zhǔn)SQL的擴(kuò)展可以生效:
1、允許在select list、having condition和order by list中使用沒有出現(xiàn)在group by list中的字段。
此時(shí)mysql會(huì)隨機(jī)選擇沒有出現(xiàn)在group by list中的字段的值。效果和使用ANY_VALUE()是相同的。
2、允許在having condition中使用select list中的alias
延伸閱讀:
二、在數(shù)據(jù)庫(kù)中存儲(chǔ)圖像的常用方法
在數(shù)據(jù)庫(kù)中存儲(chǔ)圖像的常用方法是在存儲(chǔ)數(shù)據(jù)之前將圖像轉(zhuǎn)換為base64數(shù)據(jù)。這個(gè)過(guò)程將增加 33% 的大小?;蛘?,可以將圖像直接存儲(chǔ)為?BLOB;例如:
$image = new Imagick(“image.jpg”);
$data = $image->getImageBlob();
$data = $mysqli->real_escape_string($data);
$mysqli->query(“INSERT INTO images (data) VALUES (‘$data’)”);
然后用
顯示圖片
使用后一種方法,我們節(jié)省了 1/3 的存儲(chǔ)空間。為什么在 MySQL 數(shù)據(jù)庫(kù)中將圖像存儲(chǔ)為?base64?更常見?
關(guān)于將圖像存儲(chǔ)在數(shù)據(jù)庫(kù)中的優(yōu)缺點(diǎn)有很多爭(zhēng)論,大多數(shù)人認(rèn)為這不是一種實(shí)用的方法。無(wú)論如何,在這里我假設(shè)我們將圖像存儲(chǔ)在數(shù)據(jù)庫(kù)中,并討論這樣做的優(yōu)異方法。