一個sql語句,直接放到mysql裡運行是正常的
但用php的mysql_query運行該sql後結果卻不同,會是mysql_query不能解析的原因嗎?
sql如下:
INSERT INTO analysis.caomei_of_list_pvuv (region,isp,uv,pv,date) SELECTtb2.region,tb2.isp,tb2.uv,tb2.pv,'2014-05-14' AS date FROM (SELECT tb.region,tb.isp, COUNT(tb.mac) AS uv,SUM(tb.mac_num) AS pv FROM caomei_20140515.caomei_1 AS tb WHERE tb.date = '2014-05-14' GROUP BY tb.region, tb.isp ) AS tb2 LEFT JOIN (SELECT tb6.region,tb6.isp,tb6.uv,tb6.pv FROM analysis.caomei_of_list_pvuv AS tb6 WHERE tb6.date='2014-05-14' ) AS tb1 ON tb2.region = tb1.region WHERE tb1.region IS NULL AND tb2.region IS NOT NULL ;
回複討論(解決方案)
NSERT INTO analysis.caomei_of_list_pvuv
(region,isp,uv,pv,date)
SELECT
tb2.region,tb2.isp,tb2.uv,tb2.pv,'2014-05-14' AS date
FROM
(
SELECT
tb.region,tb.isp, COUNT(tb.mac) AS uv,
SUM(tb.mac_num) AS pv
FROM
caomei_20140515.caomei_1 AS tb
WHERE
tb.date = '2014-05-14'
GROUP BY tb.region, tb.isp
) AS tb2
LEFT JOIN
(
SELECT
tb6.region,tb6.isp,tb6.uv,tb6.pv
FROM
analysis.caomei_of_list_pvuv AS tb6
WHERE
tb6.date='2014-05-14'
) AS tb1
ON tb2.region = tb1.region
WHERE
tb1.region IS NULL
AND tb2.region IS NOT NULL
這是不允許的
NSERT INTO analysis.caomei_of_list_pvuv
(region,isp,uv,pv,date)
SELECT
tb2.region,tb2.isp,tb2.uv,tb2.pv,'2014-05-14' AS date
FROM
(
SELECT
tb.region,tb.isp, COUNT(tb.mac) AS uv,
SUM(tb.mac_num) AS pv
FROM
caomei_20140515.caomei_1 AS tb
WHERE
tb.date = '2014-05-14'
GROUP BY tb.region, tb.isp
) AS tb2
LEFT JOIN
(
SELECT
tb6.region,tb6.isp,tb6.uv,tb6.pv
FROM
analysis.caomei_of_list_pvuv AS tb6
WHERE
tb6.date='2014-05-14'
) AS tb1
ON tb2.region = tb1.region
WHERE
tb1.region IS NULL
AND tb2.region IS NOT NULL
這是不允許的
但是mysql是能正常執行得到結果。
php也能執行,只是結果出現位移了!!
問題不在於是否有文法錯
而在於控制邏輯是迴圈悖論
但我覺得這樣應該沒有邏輯問題啊,先查出結果。然後將結果寫入自己。
最主要是 php啟動並執行結果和mysql啟動並執行結果不同!!
是要盡量避免這種邏輯嗎,否則就會出現這種意想不到的結果啊
INSERT INTO a (version)SELECT version FROM a WHERE id=1;
假定第一次執行插入了 1 條
那麼第二次執行就會插入 2 條
第三次執行就會插入 4 條
我知道了。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。