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)
)