4

これが私のテーブルの外観です。

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

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

選択を設定するにはどうすればよいですか?

4

2 に答える 2

3

以下を使用できます。

select *
from yourtable t1
where color = 'red'
  and exists (select user
              from yourtable t2
              where t1.user = t2.user
              group by user
              having count(distinct color) = 1)

デモで SQL Fiddle を参照してください

または、サブクエリなしで使用できます:

select *
from yourtable
group by user
HAVING  SUM(color = 'red') = COUNT(*)

デモで SQL Fiddle を参照してください

于 2013-02-26T17:06:18.607 に答える
2

彼のクエリを試してください

Select * 
from tbl 
where color = 'RED' AND USER not in 
(Select USER from tbl where color <> 'RED');
于 2013-02-26T17:07:26.010 に答える