如何从mysql中删除重复数据

时间:2014-07-13 10:17:51

标签: java mysql swing

这里我想让用户选择他想要删除的数据

根据我要删除,但如果用户选择重复的数据,那么我想只选择重复。

所以问题是,我不知道用户何时会选择重复数据以及何时会选择非重复数据

任何人都可以帮助我吗?我是mysql的新手

import java.util.*;
import java.sql.*;

class Test {
    public static void main(String arg[]) {
        try {
            String insert = "delete from photo where iname=" + "?";
            String image = "done.jpg";

            String insertQuery = "insert into photo (iname)" + "values" + "(?)";
            String query = "select * from photo";
            Class.forName("com.mysql.jdbc.Driver");
            Connection con = DriverManager.getConnection(
                    "jdbc:mysql://localhost:3306/mydb", "cubie", "mypass100");
            Statement st = con.createStatement();
            ResultSet rs = st.executeQuery(query);

            while (rs.next()) {

                String sname = rs.getString(1);
                System.out.println(sname);

            }
            PreparedStatement pstmt = con.prepareStatement(insertQuery);
            pstmt.setString(1, image);
            pstmt.executeUpdate();
            st.executeUpdate("insert into photo values('principal.jpg')");
            st.executeUpdate("insert into photo values('done.jpg')");
            pstmt = con.prepareStatement(insert);
            pstmt.setString(1, image);
            pstmt.executeUpdate();

            con.close();
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

1 个答案:

答案 0 :(得分:0)

你的问题就在这一行

String insertQuery="delete from photo where iname="+"?";

如果执行此语句,则将删除具有给定图像名称的所有行。如果表中有ID列,则可以重写语句以删除图像的第一个(或最后一个)。像这样:

delete from photo where id = (select min(id) from photo where iname = ?)