Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/68.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 选择具有相同属性1和不同属性2的行_Sql_Ms Access - Fatal编程技术网

Sql 选择具有相同属性1和不同属性2的行

Sql 选择具有相同属性1和不同属性2的行,sql,ms-access,Sql,Ms Access,我有一张桌子 +----+------+---------+ | ID | CODE | COUNTRY | +----+------+---------+ | 1 | 05 | France | | 2 | 05 | France | | 3 | 06 | Germany | | 4 | 07 | France | | 5 | 07 | Italy | +----+------+---------+ 我需要选择代码相同但国家不同的行。 因此,结果应该是

我有一张桌子

+----+------+---------+
| ID | CODE | COUNTRY |
+----+------+---------+
|  1 |   05 | France  |
|  2 |   05 | France  |
|  3 |   06 | Germany |
|  4 |   07 | France  |
|  5 |   07 | Italy   |
+----+------+---------+
我需要选择代码相同但国家不同的行。 因此,结果应该是:

+------+---------+
| CODE | COUNTRY |
+------+---------+
|   07 | France  |
|   07 | Italy   |
+------+---------+
我试过了

SELECT t1.code AS code, t1.country AS country
FROM countries AS t1, countries AS t2
WHERE t1.code = t2.code
AND t1.country <> t2.country;
结果是:

+------+---------+
| CODE | COUNTRY |
+------+---------+
|   07 | Italy   |
|   07 | Italy   |
|   07 | France  |
|   07 | France  |
+------+---------+
但是应该和上面一样

我使用MS Access,因此查询应该在Access上运行

只需添加distinct

您可以使用“最小”和“最大”来识别不同国家/地区的代码,然后使用该代码选择所有行:

SELECT * FROM countries WHERE Code IN (
  SELECT Code
  FROM countries
  GROUP BY Code
  HAVING MIN(Country) < MAX(Country)
)

考虑选择区别有时我想知道我是否和别人一样阅读同样的问题。这是如何选择代码相同但国家不同的行的?@Damien_the_unsiver这里的键是OP query,它已经对上面示例中的表起作用了,所以只需要distinct就可以删除重复的行。结果是3条记录:法国、意大利、意大利。
SELECT DISTINCT t1.code AS code, t1.country AS country
FROM countries AS t1, countries AS t2
WHERE t1.code = t2.code
AND t1.country <> t2.country;
SELECT * FROM countries WHERE Code IN (
  SELECT Code
  FROM countries
  GROUP BY Code
  HAVING MIN(Country) < MAX(Country)
)