2014-01-07 20 views
0

非常簡單的概念。我根據生成日期(X天前)選擇特定的行並按時間範圍組織它們(在這種情況下,變量爲OVERDUEDAYS)。我現在遇到的唯一問題是定義OVERDUEDAYS並選擇整行內容,而不必在select語句中定義每一列。MySQL:定義變量時選擇所有字段?

事不宜遲(這是我希望能達到):當你刪除通配符和手動定義每列

SELECT DATEDIFF(CURDATE(), DATE(date_generated)) AS OVERDUEDAYS, * FROM invoices WHERE 
    (DATE(date_generated) = DATE_SUB(CURDATE(), INTERVAL 10 DAY) 
OR 
    DATE(date_generated) = DATE_SUB(CURDATE(), INTERVAL 30 DAY) 
OR 
DATE(date_generated) = DATE_SUB(CURDATE(), INTERVAL 45 DAY) 
OR 
    DATE(date_generated) = DATE_SUB(CURDATE(), INTERVAL 53 DAY) 
OR 
    DATE(date_generated) = DATE_SUB(CURDATE(), INTERVAL 60 DAY)) 
AND 
    (paid=0 AND cancelled=0) 

查詢的偉大工程......但是這是一個很大的列和我想不惜一切代價避免這種情況。建議?

+0

您對當前查詢有什麼錯誤? –

+0

@ peter.petrov我收到一個語法錯誤。沒有具體的。 – user0000001

+0

發佈,可能會有所幫助。 –

回答

-2
SELECT * FROM invoices WHERE colunm_id IN (
    SELECT colunm_id FROM invoices WHERE 
     (DATE(date_generated) = DATE_SUB(CURDATE(), INTERVAL 10 DAY) 
      OR 
     DATE(date_generated) = DATE_SUB(CURDATE(), INTERVAL 30 DAY) 
      OR 
     DATE(date_generated) = DATE_SUB(CURDATE(), INTERVAL 45 DAY) 
      OR 
     DATE(date_generated) = DATE_SUB(CURDATE(), INTERVAL 53 DAY) 
      OR 
     DATE(date_generated) = DATE_SUB(CURDATE(), INTERVAL 60 DAY)) 
      AND 
     (paid=0 AND cancelled=0) 
) 
+0

世界上有什麼?聽起來不像在這裏......但你甚至讀過我的OP嗎? – user0000001