0

これは私のテーブルの外観です:

(前に言いませんでした、colum2は整数ではなく文字列型です、ごめんなさい)

╔══════╦═══════╗
║ USER ║ COLOR ║
╠══════╬═══════╣
║ a    ║ Red   ║
║ b    ║ Blue  ║
║ c    ║ Blue  ║
║ b    ║ Red   ║
║ a    ║ Red   ║
║ c    ║ White ║
╚══════╩═══════╝

color= "Red"のみの行が必要です。
「a」を返す必要があります (「b」には値「Blue」も含まれます)。

選択を設定するにはどうすればよいですか? 感謝と敬意

4

3 に答える 3

3
SELECT  column1
FROM    TableName
GROUP   BY Column1
HAVING  COUNT(DISTINCT column2) = 1
        AND MAX(column2) = 1

別の方法があります、

SELECT  column1
FROM    TableName
GROUP   BY Column1
HAVING  MAX(column2) = MIN(column2) AND
        MAX(column2) = 1

更新1

SELECT  user
FROM    TableName
GROUP   BY user
HAVING  SUM(color = 'red') = COUNT(*)
于 2013-02-26T16:12:37.567 に答える
0

これを行うより効率的な方法は、minとのmax値を比較することです。

select column1
from t
group by column1
having min(column2) = max(column2) and min(column2) = 1

列が NULL 値を取ることができる場合は、それらも除外する必要があります。

select column1
from t
group by column1
having min(column2) = max(column2) and min(column2) = 1 and count(column2) = count(*)
于 2013-02-26T16:15:12.947 に答える
-1
Select distinct Column1 from Table1 Where Column2='1'

または、整数の場合:

Select distinct Column1 from Table1 Where Column2=1

Table1 がテーブル名であると仮定します。

于 2013-02-26T16:11:39.010 に答える