2013-03-26 52 views
1
低於

獨特的價值是我的表稱爲companies如何找到表

company_id  Status 
1001    OFF 
1002    OFF 
1003    OFF 
1003    ON 

我需要避免如有company_idstatus 'ON'

我需要出去放像下面

company_id  Status 
1001    OFF 
1002    OFF 

如何我寫這個查詢

回答

3
SELECT * 
FROM tableName 
WHERE company_ID NOT IN 
     (
      SELECT company_ID 
      FROM tableName 
      WHERE Status = 'ON' 
     ) 

或使用LEFT JOIN

SELECT a.* 
FROM tableName a 
     LEFT JOIN 
     (
      SELECT company_ID 
      FROM tableName 
      WHERE Status = 'ON' 
     ) b ON a.company_ID = b.company_ID 
WHERE b.company_ID IS NULL 
+0

正確的答案,但很奇怪的做法呢? – Waller 2013-03-26 11:35:10

+0

@waller爲什麼很奇怪? – 2013-03-26 11:36:17

+0

檢查我的查詢,是不是一個簡單的where子句足以做到這一點? – Waller 2013-03-26 11:36:47

3
SELECT Company_Id, Status FROM Companies C 
WHERE NOT EXISTS(SELECT * FROM Companies 
WHERE Company_Id = C.Company_id AND Status = 'ON') 
+0

這顯示退出一個 – user2097335 2013-03-26 11:37:33

+1

爲什麼這個答案downvoted? – 2013-03-26 11:41:07

+0

@JW不知道。這阻止我們提供解決方案:( – 2013-03-26 11:42:31

-1
SELECT company_ID, MAX(Status) AS Status FROM companies 
GROUP BY company_ID 
HAVING MAX(Status) = 'OFF' 

您可以使用MIN和MAX函數的字符串值排序。在這種情況下,MAX將在OFF之前返回ON。