2012-02-13 68 views
0

我有這個疑問在這裏:返回指定的值,如果沒有結果

$query='insert into pageview (visitor,id_realestate,time) 
    select "q17872745t", 150, now() 
    from pageview a 
    where DATE_ADD(now(),INTERVAL -30 MINUTE) > (
     select max(time) from pageview b where a.id_realestate=b.id_realestate AND a.visitor=b.visitor 
) LIMIT 1'; 

我想這個部分:

select max(time) from pageview b where a.id_realestate=b.id_realestate AND a.visitor=b.visitor 

返回一個日期/時間這是現在( )減去40分鐘如果沒有結果

+0

什麼是想幹什麼?你爲什麼要獲得兩次「pageview」表?請告訴我們你需要插入什麼,我們可以正確地重構你的查詢 – Marco 2012-02-13 10:32:45

+0

@Marco看到這個http://stackoverflow.com/questions/9251082/insert-with-a-condition/9251278#9251278 我現在想還插入數據如果組合(訪客,價值)不存在。 – 2012-02-13 10:35:14

回答

1

MAX(time)包裝在IFNULL條款中。

IFNULL(MAX(time), NOW() - INTERVAL 40 MINUTE) 
0

假設你的查詢是正確的,則只需將您的當前查詢的另一個查詢和檢查,看看是否值爲null就像這樣:

選擇IFNULL(從瀏覽量b 選擇MAX(時間) 其中a.id_realestate = b.id_realestate AND a.visitor = b.visitor,DATE_SUB(現在的(),INTERVAL 30分鐘));

在上面的查詢中,我用max()作爲子查詢包裝了查詢,並且如果返回的值爲null,則使用DATE_SUB從現在()減去30分鐘後返回一個值。

+0

這裏不需要子查詢。 – fancyPants 2012-02-13 10:59:06