之前一直不知道主鍵是幹啥的,讀題就總選擇性忽略了主鍵,然後今天這個題,給我上了生動的一課...
思路很簡單,關鍵是要選出每個產品2019-08-16之前最大日期,以及它對應的產品id及**。大概就是創造乙個這個樣子的臨時表。
然後我寫出了這樣子的**。
select product_id, max(change_date) as date
from products
where change_date <= '2019-08-16'
group by product_id
然後發現,我的臨時表為什麼總是這個樣子。
也就是說,他的**和日期沒有對應上!!
看了別人的答案,我才發現主鍵的重要性。
直到我的**變成:
select product_id, new_price
from products
where (product_id, change_date) in (select product_id, max(change_date) as date
from products
where change_date <= '2019-08-16'
group by product_id)
他才乖乖聽話給我對應上了。
其實上上篇部落格沒有解決的問題,也是出在這裡了。
行了我知道主鍵不是寫著好看的了。
select t1.product_id, ifnull(new_price, 10) as price
from (select distinct product_id from products) t1 left join
(select product_id, new_price
from products
where (product_id, change_date) in (select product_id, max(change_date) as date
from products
where change_date <= '2019-08-16'
group by product_id) ) t2
on t1.product_id = t2.product_id;
被微軟的UTF 8 BOM編碼坑了
今天用git拉去 時發現有的檔案會出現亂碼,但同事拉取下來卻沒有出現問題。在這件事上,我和同事的唯一區別就是所用的作業系統不同,我用的是mac,他用的是window。同乙個檔案在不同作業系統的表現不同,很有可能是採用了window支援但mac不支援的編碼格式。緊接著,我檢視了出問題的檔案的編碼格式,...
王國的婚禮 被水題坑了一波
description 在ljj王國裡,婚姻法規定,結婚後不許離婚,但可以選擇婚姻年限 1 到 100 年,過期不續費就相當於自動離婚,但是時間越短費用越高,年的登記費超過 1 萬億元,100 年只需要 元。結婚一年,說明你不懂婚姻,於是有一本很厚的婚姻書要看,而選擇100年只有一張紙,上面寫著一句...
SQL語句編寫的那些坑,你踩了幾個?
前言 金九銀十,又到了一年的程式設計師跳槽季,最近總有一些朋友在問資料庫的問題,說面試的時候總是被問到,雖然知道一些,但是要完整的表達還是欠缺的,想了想與其乙個乙個解答,不如做個資料庫優化問題集錦,供所有的有這個方面需要的朋友參考。一些sql優化建議 首先要強調一點 乙個sql語句要盡量簡單,不要巢...