我有一个表格,有多个列,我需要从其中两列获取唯一值。MySQL - 两列中不同的值
表看起来是这样的
msgid sender receiver payload
1 service1 service2 xxx
2 service1 service3 xxx
3 service2 service3 xxx
...
所需的输出应该是:服务1,服务2,服务3
我发现了多少种不同的方法(从列发送者和接收者不同的值)要做到这一点,并选择使用这样的联盟:
String query = "(SELECT sender AS service FROM messages) UNION " +
"(SELECT receiver AS service FROM messages) ORDER BY service";
我也试过
String query = "(SELECT DISTINCT sender AS service FROM messages) UNION " +
"(SELECT DISTINCT receiver AS service FROM messages) ORDER BY service";
由于UNION已经返回唯一值,所以应该产生相同的值。但是,我越来越mysql异常:
java.sql.SQLException: Column 'sender' not found.
但列发送者存在!当我跑
String query = "SELECT DISTINCT sender FROM messages";
一切正常。你能告诉我,请问我做错了什么?我试图使用类似的声明this post suggested。谢谢!
编辑:这是我使用的是现在准确的查询:
String query = "SELECT sender AS service FROM messages UNION SELECT receiver AS service FROM messages ORDER BY service";
在评论中提到这个查询应该工作。但是,我仍然得到例外。为什么这样?感谢您排除故障...
我的MySQL版本是5.6。
编辑2:我不知道这个问题可能与JDBC而不是我的声明。我apologiye不提供我的问题此信息...
是'union'是让不同的值,那么为什么乌尔使用'distinct' .. – Rahul
什么是引发sql异常的确切查询? – Stephan
正如我在我的问题中指出的那样,我已经尝试了两个陈述,并且它们都产生了相同的豁免... – Smajl