gpt4 book ai didi

MySQL Java 通过不同字段获取对象

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

我需要按不同字段从数据库返回java 对象。在我的数据库中,我有国家城市。现在我有 2 条记录,它们在字段中具有相同的数据,但我只想返回一个国家/地区的不同州。

澄清一下 - 我有同一个国家和州的两条记录。例如,我只想返回一个州而不是华盛顿两次。但是,我需要该对象而不是返回 Washington 字符串。

我的查询:

SELECT DISTINCT r FROM Roster r where r.state = :state AND r.country = :country

发生的情况是它将返回所有重复项,因为对象不不同,我只想要每个对象之一?

如果我不太清楚,我深表歉意。

任何帮助将不胜感激!

编辑:我需要这些对象,因为我正在使用它们来填充结果表。

编辑2:我创建的表:

CREATE TABLE `roster` (
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`country` varchar(45) NOT NULL,
`state` varchar(45) NOT NULL,
`city` varchar(45) DEFAULT NULL,
`clientName` varchar(45) NOT NULL,
`tDomain` varchar(45) NOT NULL,
`tSubDomain` varchar(45) DEFAULT NULL,
`tReferenceId` varchar(45) DEFAULT NULL,
`startDate` date DEFAULT NULL,
`endDate` date DEFAULT NULL,
`startTime` time DEFAULT NULL,
`endTime` time DEFAULT NULL,
`designation` varchar(45) DEFAULT NULL,
`role` varchar(45) DEFAULT NULL,
`name` varchar(45) NOT NULL,
`surname` varchar(45) NOT NULL,
`mobileNumber` varchar(45) DEFAULT NULL,
`officeNumber` varchar(45) DEFAULT NULL,
`email` varchar(45) DEFAULT NULL,
`availability` tinyint(1) NOT NULL,
`comments` varchar(45) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=latin1

tReferenceID 之前的所有内容都可能很常见。其余的将是独一无二的。我正在考虑将 table 分成两部分的想法。但这将涉及相当大的重写。

最佳答案

如果JPA落在我头上我就不知道了。所以我在这之后摸索:

SELECT DISTINCT r.Country,r.State,r.City 
FROM Roster r
where r.state = :state AND r.country = :country

编辑:

好吧,这对于对象来说显然是错误的:>

怎么样

create table roster
(
id int auto_increment primary key,
country varchar(100) not null,
state varchar(100) not null,
city varchar(100) not null
);

insert roster (country,state,city) values ('usa','kentucky','louisville');
insert roster (country,state,city) values ('usa','illinois','chicago');
insert roster (country,state,city) values ('usa','kentucky','louisville');
insert roster (country,state,city) values ('usa','kentucky','blah_blah');

对于我使用的字符串

select * from roster r
join
(SELECT min(id) as cheatId
FROM roster
where country='usa' and state='kentucky') inr
on inr.cheatId=r.id

+----+---------+----------+------------+---------+
| id | country | state | city | cheatId |
+----+---------+----------+------------+---------+
| 1 | usa | kentucky | louisville | 1 |
+----+---------+----------+------------+---------+
1 row in set (0.00 sec)

对于您使用的对象:

select r from roster r
join
(SELECT min(id) as cheatId
FROM roster
where country=:country and state=:state) inr
on inr.cheatId=r.id

关于MySQL Java 通过不同字段获取对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31598102/

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