一、為什么mysql having的條件表達(dá)式可以直接使用select后的別名
SQL語句的語法順序:
FROM -> WHERE -> GROUP BY -> HAVING -> SELECT -> DISTINCT -> UNION -> ORDER BY
因此一般不能在having condition中使用select list中的alias。但是mysql對此作了擴(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對標(biāo)準(zhǔn)SQL的擴(kuò)展可以生效:
1、允許在select list、having condition和order by list中使用沒有出現(xiàn)在group by list中的字段。
此時(shí)mysql會隨機(jī)選擇沒有出現(xiàn)在group by list中的字段的值。效果和使用ANY_VALUE()是相同的。
2、允許在having condition中使用select list中的alias
延伸閱讀:
二、在數(shù)據(jù)庫中存儲圖像的常用方法
在數(shù)據(jù)庫中存儲圖像的常用方法是在存儲數(shù)據(jù)之前將圖像轉(zhuǎn)換為base64數(shù)據(jù)。這個(gè)過程將增加 33% 的大小?;蛘撸梢詫D像直接存儲為?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 的存儲空間。為什么在 MySQL 數(shù)據(jù)庫中將圖像存儲為?base64?更常見?
關(guān)于將圖像存儲在數(shù)據(jù)庫中的優(yōu)缺點(diǎn)有很多爭論,大多數(shù)人認(rèn)為這不是一種實(shí)用的方法。無論如何,在這里我假設(shè)我們將圖像存儲在數(shù)據(jù)庫中,并討論這樣做的優(yōu)異方法。