#java #sql
#java #sql
Вопрос:
У меня есть JComboBox, который я хочу заполнить кафедрами студентов в базе данных. Теперь один и тот же отдел встречается в таблице много раз, поэтому я хочу, чтобы каждое название отдела отображалось в списке элементов только один раз. Настоящий код, который я написал, не дает желаемого результата. Он помещает одно и то же название отдела несколько раз в список со списком. Как я могу это решить? Мой код для извлечения названий отделов приведен ниже:
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/mydaatabase1","root","Password123");
String sql1 = "select distinct (dept) from droptest";
PreparedStatement pss = conn.prepareStatement(sql1);
ResultSet rs = pss.executeQuery(sql1);
while(rs.next())
{
String d = rs.getString("dept");
jComboBox1.addItem(d);
}
Комментарии:
1. Ваш оператор SQL верен. Нет необходимости в каком-либо групповом операторе, поскольку вы выполняете distinct только для 1 столбца. Может возникнуть проблема в операторе while, который добавляет элемент.
2. Я поместил приведенный выше код в конструктор, поэтому я предполагаю, что он каким-то образом вызывается более одного раза. Возможно ли это?
Ответ №1:
Я думаю, вам нужно использовать group by в select data…
выберите ColumnName из группы tablename по ColumnName
Select dept
From droptest
Group by dept
Группировать по-разному
Комментарии:
1. Группировать по не требуется. Он принимает только отдельные данные в 1 столбце.
2. Хорошо работают оба