2012-08-29 154 views
1

對於下面的查詢,某些結果在數據庫中沒有「年齡」。我如何排除這些對「年齡」沒有任何影響的值?排除字段爲空的結果

$sqlStr3 = "SELECT 
       username 
       ,loginid 
       ,age 

     FROM login 
     ORDER BY age ASC 
      LIMIT $offset, $rowsperpage"; 

回答

1

如果年齡默認爲NULL(典型案例),添加一個簡單的WHERE age NOT NULL檢查:

SELECT 
    username 
    ,loginid 
    ,age 

FROM login 
WHERE age NOT NULL 
ORDER BY age ASC 
LIMIT $offset, $rowsperpage 
+0

這工作,但它增加了一個多餘的where子句時,有一個內置的運營商爲。不必要的地方添加額外的開銷。 http://www.mysqlperformanceblog.com/2008/10/31/how-expensive-is-a-where-clause-in-mysql/ – Nilpo

+0

@Nilpo我不確定在這裏需要性能優化。此外,鏈接的文章質量可疑。我不是MySQL專家,但基準測試很少正確完成,我自然是一個懷疑論者。 –

+0

我當然不是在暗示它是用石頭寫的,但是一個選擇必須比複合選擇更快。我個人認爲*每個*查詢應儘可能優化。這只是一個好習慣。 – Nilpo

0

你可以使用WHERE子句,但它更容易和更快地只是IS NOT NULL經營者添加到您的選擇該字段。

$sqlStr3 = "SELECT 
       username 
       ,loginid 
       ,age IS NOT NULL 

     FROM login 
     ORDER BY age ASC 
      LIMIT $offset, $rowsperpage"; 

Comparison Functions and Operators