如何向查询中添加其他WHERE子句。有这样的查询:
SELECT round(Sum(Zarada), 2) AS Zarada,
cms_cart_customers.Firstname,
cms_cart_wallet.WalletType as WW ,
cms_cart_customers.Lastname,
FROM_UNIXTIME(`cms_cart_customers`.`d_ins`, " %d.%m.%Y") AS Datum_formatiran
FROM (cms_cart_customers)
LEFT JOIN cms_cart_wallet
ON cms_cart_wallet.IdBuyer =cms_cart_customers.Id
WHERE `cms_cart_customers`.`IDReferral` = '199' AND
if(ww = 7) THEN ' cms_cart_wallet.WalletType =7' END IF
GROUP BY cms_cart_customers.Id如果选择cms_cart_wallet.WalletType作为Ww,则添加新的额外子句,其中cms_cart_wallet.WalletType为7。这样做是可能的吗?
发布于 2015-12-24 19:13:01
您可以通过在left join on条件中再添加一个子句来完成此操作,如下所示。
SELECT round(Sum(Zarada), 2) AS Zarada, cms_cart_customers.Firstname,cms_cart_wallet.WalletType as WW ,cms_cart_customers.Lastname, FROM_UNIXTIME(cms_cart_customers.d_ins, " %d.%m.%Y") AS Datum_formatiran FROM (cms_cart_customers) LEFT JOIN cms_cart_wallet ON cms_cart_wallet.IdBuyer =cms_cart_customers.Id and cms_cart_wallet.WalletType =7 WHERE cms_cart_customers.IDReferral = '199' GROUP BY cms_cart_customers.Id发布于 2015-12-24 19:39:48
您可以直接在where子句中添加它,而不使用任何别名。
SELECT round(Sum(Zarada),2) as Zarada,cms_cart_customers.Firstname,cms_cart_wallet.WalletType AS WW,cms_cart_customers.Lastname,FROM_UNIXTIME(cms_cart_customers.d_ins,“%d.%m.%Y") AS Datum_formatiran FROM (cms_cart_customers) LEFT JOIN cms_cart_wallet ON cms_cart_wallet.IdBuyer =cms_cart_customers.Id WHERE cms_cart_customers.IDReferral = '199‘and cms_cart_wallet.WalletType =7 GROUP BY cms_cart_customers.Id
发布于 2015-12-24 21:13:16
你不需要if来做这件事。简单的条件逻辑就足够了:
WHERE cms_cart_customers.IDReferral = '199' AND
(ww <> 7 or cms_cart_wallet.WalletType = 7)要处理NULL值:
WHERE cms_cart_customers.IDReferral = '199' AND
(COALESCE(ww, 0) <> 7 or cms_cart_wallet.WalletType = 7)https://stackoverflow.com/questions/34451640
复制相似问题