合計列から値を選択し、結果を計算列にランク付けする表を持っていますが、計算列は実際の列ではないため、計算された列から同じ値を同じ表の実数列にコピーします。SQLステートメントは、実際の列をランク付けされた仮想列の値で更新する
private void classStatistics(){
try{
String sql ="select s1.Name as 'Pupil',s1.Maths_Total as 'Total Score',"
+ "s1.Maths_G as 'Grade',s1.Maths_R as 'Remark',s1.maths_Pos AS
'Position',COUNT(DISTINCT s2.maths_Total) AS Rank from class1 s1 JOIN
class1 s2 on(s1.maths_Total<=s2.maths_Total)GROUP BY s1.ID order by s1.Name
ASC ";
pst=conn.prepareStatement(sql);
rs=pst.executeQuery();
class1_statistics.setModel(DbUtils.resultSetToTableModel(rs));
}
catch(Exception e){
e.getMessage();
}
finally{
try{
rs.close();
pst.close();
}
catch(Exception e){
}
}
class1Entry();
}
これは、計算された列をRankとして作成し、Positionという名前の列を計算されたRankされた列と同じ値で更新したいとします。 私はこのコードを書いています。私の選択した列「Maths_Pos」
private void getPosition(){
try{
String sql= "Update class1 set Maths_Pos=(SELECT COUNT(DISTINCT
s2.maths_Total) AS Rank from class1 s1 JOIN class1 s2
on(s1.maths_Total<=s2.maths_Total)GROUP BY s1.ID order by s1.Name ASC)";
pst=conn.prepareStatement(sql);
pst.execute();
}catch(Exception e){
}
finally{
try{
rs.close();
pst.close();
}
catch(Exception e){
}
}
}
に私の更新のための
//このだが、これは行うことは、残りのすべての行の最初の行のちょうど最初のランク値を繰り返すことです。したがって、列に異なる値を持たせる代わりに、列のすべての行で同じ値を実行する必要があります。あなたのアップデートで
リットルで結果を「位置column」を更新することです。あなたはそれを編集して、サンプルデータと、あなたがここに関係していると思われる生のSQLクエリーを含めることができますか? –
人々に試して読んでもらう場合は、コードを正しくインデントしてください。 – khelwood