0

メキシコにのみ表示され、他の国には表示されない名前を選択したいと思います。

Country      |  Name      
-------------|------------
Mexico       |  Vallejo
Mexico       |  Rachel
United States|  Rachel
UK           |  Rachel
Australia    |  Rachel
Mexico       |  Amy
Canada       |  Amy 
Mexico       |  Annette
Mexico       |  Jennifer
Swahili      |  Jennifer 
Mexico       |  Benedict 

正しいクエリでは、次の名前のみが返されます。

Name      
---------
Annette
Benedict
Vallejo

何か案は?これがDISTINCT条件とWHERE条件の組み合わせである可能性があるかどうかはわかりません。

4

3 に答える 3

2
SELECT 
      Name 
  FROM table 
  WHERE Name NOT IN 
  (
    SELECT DISTINCT 
          Name 
        FROM table 
        WHERE Country != 'Mexico'
  )
于 2012-05-02T03:51:11.407 に答える
1

私はあなたがのようなものが欲しいと思います

SELECT Name
FROM <table>
WHERE Country = 'Mexico'
AND Name NOT IN (
    SELECT Name
    FROM <table>
    WHERE Country <> 'Mexico')
于 2012-05-02T03:50:03.540 に答える
1

MySQLを使用したSQLFiddleのデモを表示するには、ここをクリックしてください。

脚本:

CREATE TABLE mytable
(
    country VARCHAR(30) NOT NULL
  , name    VARCHAR(30) NOT NULL
);

INSERT INTO mytable (country, name) VALUES
 ('Mexico',         'Vallejo'),
 ('Mexico',         'Rachel'),
 ('United States',  'Rachel'),
 ('UK',             'Rachel'),
 ('Australia',      'Rachel'),
 ('Mexico',         'Amy'),
 ('Canada',         'Amy '),
 ('Mexico',         'Annette'),
 ('Mexico',         'Jennifer'),
 ('Swahili',        'Jennifer'),
 ('Swahili',        'Steve'),'),
 ('Swahili',        'Jill'),
 ('Mexico',         'Benedict');

SELECT      name
FROM        mytable
GROUP BY    name
HAVING      AVG((CASE WHEN country = 'Mexico' THEN 1 ELSE 0 END) * 1.) >= 1

出力

NAME
--------
Annette
Benedict
Vallejo
于 2012-05-02T04:41:59.410 に答える