14

我有一个 MS 访问数据库,我需要创建一个 SQL 查询,允许我选择一列中所有不不同的条目,同时仍保留所有值。

在这种情况下,一个例子比以往任何时候都更值得数千字:

桌子:

A B C
1 x q
2 y w
3 y e
4 z r
5 z t
6 z y

SQL魔术

结果:

B C
y w
y e
z r
z t
z y

基本上,它删除了 B 列的所有唯一值,但保留了多行数据。我可以“按 b 分组”,然后“计数> 1”以获得不明显的结果,但结果只会列出 B 的一行,而不是我需要的 2 或更多。

有什么帮助吗?

谢谢。

4

4 回答 4

27
Select B, C
From Table
Where B In
    (Select B From Table
     Group By B
     Having Count(*) > 1)
于 2008-11-06T18:13:25.070 回答
7

返回您想要的结果的另一种方法是:

select *
from
    my_table
where 
    B in 
    (select B from my_table group by B having count(*) > 1)
于 2008-11-06T18:05:26.990 回答
3
select 
  * 
from 
  my_table t1, 
  my_table t2
where 
  t1.B = t2.B
and
  t1.C != t2.C

-- apparently you need to use <> instead of != in Access
-- Thanks, Dave!

类似的东西?

于 2008-11-06T17:53:28.963 回答
1

将您使用 group by b 和 count > 1 确定的 B 的唯一值连接回原始表,以从表中检索 C 值。

于 2008-11-06T17:54:13.237 回答