2012-04-09 47 views
3

我正在嘗試編寫where子句,它將查找滿足三個條件中至少兩個條件的人。 這是一個例子Where子句返回至少滿足三個條件中的兩個的值

SELECT * 
    FROM Personal 
    WHERE 
    [State] = 'Tx' or [City] = 'Austin' or [Gender] = 'Male' 

所以它應該返回的人誰住在得克薩斯州和奧斯汀或住在得克薩斯州,是男性等,但不會有人誰只是住在得克薩斯州,他們必須滿足至少兩個的標準

我真正的查詢可以有更多的標準,還包括一個大於兩個或正好兩個,等等。

在此先感謝

回答

4

您可加入比賽在一系列的情況下......然後1個否則爲0結束報表和最終結果進行比較需要的匹配數量:

SELECT * 
    FROM Personal 
    WHERE 
    case when [State] = 'Tx' then 1 else 0 end 
    + case when [City] = 'Austin' then 1 else 0 end 
    + case when [Gender] = 'Male' then 1 else 0 end 
    >= 2 

或者,你可能會把它分成一個所有工會的名單:

SELECT * 
FROM personal 
     INNER JOIN (SELECT id 
        FROM (SELECT id 
          FROM personal 
          WHERE state = 'Tx' 
          UNION ALL 
          SELECT id 
          FROM personal 
          WHERE city = 'Austin' 
          UNION ALL 
          SELECT id 
          FROM personal 
          WHERE gender = 'Male') a 
        GROUP BY id 
        HAVING COUNT (*) >= 2) a 
     ON personal.id = a.id 
+0

這兩個都會工作,感謝您的幫助。對此,我真的非常感激。 – user973671 2012-04-09 21:58:36

1
SELECT * 
    FROM Personal 
    WHERE 
    ([State] = 'Tx' AND [City] = 'Austin') or ([State] = 'Tx' AND [Gender] = 'Male') 
相關問題