2017-08-15 72 views
0

我有hard_drives表列producent, size, unit從價值/單位表中選擇記錄的最佳方式是什麼?

samsung|256|GB 
caviar |850|MB 
sandisc|512|GB 
seagate|2 |TB 

我想與size > 128GB選擇硬盤驅動器創建查詢,size < 1000MBsize < 1TB

你添加新列像size_in_bytes,或者創建一些如storage_units與列unit, size_in_bytes轉換表,並將其用於計算,或者有更好的方法來執行此類查詢?

回答

0

您應該使用一個公共單位,可能是MB,用於存儲所有磁盤大小。作爲解決方法,您可以在WHERE子句中使用CASE表達式:

SELECT * 
FROM yourTable 
WHERE 
    CASE WHEN unit = 'MB' THEN size 
     WHEN unit = 'GB' THEN 1000*size 
     WHEN unit = 'TB' THEN 1000*1000*size END > 128*1000 -- size > 128GB 
相關問題