Mysql
SELECT SUM 並刪除相似的行
SELECT SUM(coins.available_supply * hist_all.price) AS market_cap_usd_all FROM coins LEFT JOIN hist_all ON coins.id = hist_all.coins_id WHERE hist_all.price != 0 AND (hist_all.second_coin = 'USD' or hist_all.second_coin = 'USDT');
我嘗試獲取 sum
market_cap_usd_all
,但在我的表中是帶有USD
and的行USDT
:我的查詢應該是這樣的:
如果存在行
second_coin = USD
,則不要使用“USDT”獲取同一行,但如果不存在行,second_coin = USD
請檢查是否存在行second_coin = USDT
並獲取他。所以表格應該是這樣的:我不知道如何寫查詢
WHERE IF
我試過這個:... WHERE IF (hist_all.second_coin = 'USD', hist_all.second_coin = 'USD', hist_all.second_coin = 'USDT')
但它仍然匯總了來自 USD 和 USDT 的所有行。
您需要一個連接或相關子查詢(使用 `EXISTS),以便比較行:
SELECT SUM(c.available_supply * h.price) AS market_cap_usd_all FROM coins AS c JOIN hist_all AS h ON c.id = h.coins_id WHERE h.price <> 0 AND ( h.second_coin = 'USD' OR h.second_coin = 'USDT' AND NOT EXISTS ( SELECT 1 FROM hist_all AS hi WHERE hi.first_coin = h.first_coin AND hi.second_coin = 'USD' ) ) ;