2014-09-03 58 views
-1

如何將此查詢轉換爲行數?將查詢轉換爲計數行

SELECT IF(rz_price_grn != 0, rz_price_grn, ROUND(rz_price2 * currencies.`rate`)) AS `ssc_price`, rz_price_grn, rz_price2, IF(price IS NULL, 0, price) AS `goods_price` 
FROM rz_price 
LEFT JOIN currencies ON currencies.`name` = 'USD' 
LEFT JOIN goods ON goods.id = rz_price.`rz_art` 
LEFT JOIN rz_archive ON rz_archive.rz_art = rz_price.rz_art 
WHERE 
rz_archive.rz_art IS NULL 
HAVING ROUND(ssc_price, 2) != ROUND(goods_price, 2) 
LIMIT 500000 

回答

0

可以這樣工作嗎?

SELECT Count(*) 
FROM rz_price 
LEFT JOIN currencies ON currencies.`name` = 'USD' 
LEFT JOIN goods ON goods.id = rz_price.`rz_art` 
LEFT JOIN rz_archive ON rz_archive.rz_art = rz_price.rz_art 
WHERE 
rz_archive.rz_art IS NULL 
AND (ROUND(IF(rz_price_grn != 0, rz_price_grn, ROUND(rz_price2 * currencies.`rate`)), 2) != ROUND(IF(price IS NULL, 0, price), 2)) 
--LIMIT 500000 
+0

不,因爲沒有列ssc_price。 「'有條款'中的未知列'ssc_price'」 – 2014-09-03 14:22:19

+0

我已經提出了我的答案。看一看。 – 2014-09-03 14:26:09

+0

是的,它的工作原理!謝謝 – 2014-09-03 14:31:20

0

好,

SELECT COUNT(
    SELECT IF(rz_price_grn != 0, rz_price_grn, ROUND(rz_price2 * currencies.`rate`)) AS `ssc_price`, rz_price_grn, rz_price2, IF(price IS NULL, 0, price) AS `goods_price` 
    FROM rz_price 
    LEFT JOIN currencies ON currencies.`name` = 'USD' 
    LEFT JOIN goods ON goods.id = rz_price.`rz_art` 
    LEFT JOIN rz_archive ON rz_archive.rz_art = rz_price.rz_art 
    WHERE 
    rz_archive.rz_art IS NULL 
    HAVING ROUND(ssc_price, 2) != ROUND(goods_price, 2) 
) 

是否行得通?

+0

不,這不起作用 – 2014-09-03 14:21:08

+0

@ilyaiz你可以創建一個小提琴嗎?其他答案是否適合你? – 2014-09-03 14:21:32