MYSQL在两列中选择DISTINCT值

Jak*_*ake 56 mysql sql

我想在数据库中选择不同的值.让我为您提供一个快速示例.

表:

foo bar
--- ---
a   c
c   f
d   a
c   a
f   c
a   c
d   a
a   c
c   a
f   c
Run Code Online (Sandbox Code Playgroud)

是的,让我说我的SQL是SELECT DISTINCT foo, bar from table.这些是我的结果:

foo bar
--- ---
a   c
c   f
d   a
c   a
f   c
Run Code Online (Sandbox Code Playgroud)

然而问题是,重复a c/ c a只是它们处于不同的顺序.我不想选择这些,我想从两个列中获取不同的值,请帮忙!

小智 81

如何使用GROUP BY?

SELECT foo,bar FROM my_table GROUP BY foo,bar

  • 怎么会这样?这不是一个正确的答案.通过"foo,bar"将[foo = A,bar = C]和[foo = C,bar = A]分组将产生两行.虽然在这种情况下OP需要单行. (28认同)
  • 这是迄今为止更好的解决方案! (3认同)
  • 绝对是一个更好的答案. (3认同)

nab*_*sor 44

非常邪恶和邪恶:

select distinct
    least(foo, bar) as value1
  , greatest(foo, bar) as value2
from table
Run Code Online (Sandbox Code Playgroud)

  • 这个要求是邪恶的.foo可以是value1,也可以是value2.(刚刚测试过) (4认同)

Kev*_*ton 6

怎么样 :

SELECT DISTINCT a.foo,a.bar 
FROM table a
LEFT JOIN table b ON a.foo=b.bar and a.bar=b.foo
WHERE b.foo IS NULL AND b.bar IS NULL
Run Code Online (Sandbox Code Playgroud)