gpt4 book ai didi

java - MySQL - 来自两列的不同值

转载 作者:行者123 更新时间:2023-11-29 05:28:56 25 4
gpt4 key购买 nike

我有一个包含多个列的表,我需要从其中的两个列中获取唯一值。

表格看起来像这样

msgid    sender    receiver  payload
1 service1 service2 xxx
2 service1 service3 xxx
3 service2 service3 xxx
...

所需的输出应该是:service1, service2, service3(来自发送方和接收方的不同值)

我找到了许多不同的方法来实现这一点,并选择像这样使用 UNION:

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";

这个查询应该像评论中提到的那样工作。但是,我仍然得到异常(exception)。为什么这样?感谢您排除故障...

我的mysql版本是5.6。

EDIT2:我不知道问题可能出在 JDBC 而不是我的陈述。我很抱歉没有在我的问题中提供这些信息......

最佳答案

暗中猜测是当您检索数据时使用的是“发件人”而不是“服务”,这可以解释为什么前两个查询有效而后一个无效。

如果是这种情况,请告诉我。

假设您正在使用 JDBC:

    String query = "SELECT sender AS service FROM messages UNION SELECT receiver AS service FROM messages ORDER BY service";
ResultSet rs = ps.executeQuery(query);
while (rs.next()) {
String value = rs.getString("sender"); // instead it should be "service"
// Some other actions
}

关于java - MySQL - 来自两列的不同值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16830620/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com