2
+------+------+------------+------+
| id   | type| design| location   |
+------+------+------------+------+
|    1 | abc |    A  | Location X |
|    2 | abc |    A  | Location Y |
|    3 | def |    A  | Location X |
+------+------+------------+------+

上記のようなテーブルがあります。

場所 X と Y に存在する型を取得したいとします。行 1 と 2 を返す必要があります。

どのSQLを使用すればよいですか?

4

3 に答える 3

2
SELECT type
FROM    tableName
WHERE   location IN ('location x','location y')
GROUP   BY type
HAVING  COUNT(*) = 2

または、これらすべての値が必要な場合は、JOIn

SELECT  a.*
FROM    tableName a
        INNER JOIN
        (
          SELECT  type
          FROM    tableName
          WHERE   location IN ('location x','location y')
          GROUP   BY type
          HAVING  COUNT(*) = 2
        ) b ON a.type = b.type

ソース

于 2013-01-23T08:09:28.417 に答える
0
SELECT *
FROM table1
WHERE type IN(SELECT type
              FROM table1
              WHERE location IN('location X', 'location y')
              GROUP BY type
              HAVING COUNT(type) = 2
             );

SQLフィドルデモ

これはあなたに与えるでしょう:

| ID | TYPE | DESIGN |   LOCATION |
-----------------------------------
|  1 |  abc |      A | Location X |
|  2 |  abc |      A | Location Y |
于 2013-01-23T08:09:28.907 に答える
0

両方に存在するタイプを取得する必要がある場合は、次のようにする必要があります。

    select [type] 
    from ur_table 
    where location = 'Location X'
    intersect 
    select [type] 
    from ur_table 
    where location = 'Location Y'

しかし、本当に2行のすべてのデータが必要な場合は、試してください。

    select id,[type],design, location 
    from ur_table L
    where L.[type] in (select [type] from ur_table where location = 'Location X'
                       intersect select [type] from ur_table where location = 'Location Y'
                       )
于 2013-01-23T12:32:30.783 に答える