如果查询似乎正确,为什么我收到此消息: "子查询返回的值超过1。当子查询遵循=,!=,<,< =,>,> =或子查询用作表达式时,不允许这样做。 该语句已终止。 " 但是,当我尝试分割的查询时,它的工作正常,我的意思是,会发生什么?
这是查询:
UPDATE llantas_dictamen_scrap
SET clave_operador =
(SELECT REPLACE(scrap, '-', '') as clave_operador
FROM (SELECT RIGHT(clave_operador, CHARINDEX('-',REVERSE(clave_operador), 1)) as scrap
FROM llantas_dictamen_scrap) t
)
当然,我回复了多个值,这应该是什么意思?
答案 0 :(得分:0)
您要将单个列值设置为等于多个列值。如果要使用相同的查询进行更新,则必须指定要使用的列。如果您指定选择前1 ...按顺序,那么应为您的更新语句提供可用的单个子查询结果。
答案 1 :(得分:0)
好吧,如果你有 表A
Col A Col B Col C
1个2 3
1个2 3
你试试
更新表A 设置 Col B =(选择5联合选择6)
我们不知道是否需要将B列设置为5或6,因此我们收到错误。
您需要确保您的子查询只返回一个值,一种简单的方法是对子查询执行以下操作(请注意前1)。
SELECT Top 1 REPLACE(scrap, '-', '')as clave_operador FROM (SELECT RIGHT(clave_operador, CHARINDEX('-',REVERSE(clave_operador),1))as scrap FROM llantas_dictamen_scrap)t
答案 2 :(得分:0)
UPDATE llantas_dictamen_scrap
SET clave_operador = RIGHT(clave_operador, CHARINDEX('-',REVERSE(clave_operador), 1) -1)
WHERE CHARINDEX('-',clave_operador, 1) > 0
这个调整RIGHT的调整位置,不包括我们找到的' - '。没有必要调用REPLACE,因为一旦我们知道了最后一个尾随' - '的位置,我们就可以通过取最右边的字符(其位置为-1)来排除。
您无法为单行返回多个值。你正在更新多行,是的,对于FOR EACH ROW,你给clave_operador一个值。
答案 3 :(得分:0)
这意味着什么消息java.lang.ClassNotFoundExeption:com.mysql.jdbc.Driver 这是我在jform中的代码 private void saveActionPerformed(java.awt.event.ActionEvent evt){
String Number = txt_idinf.getText();
String Name = txt_Name.getText();
String Birthdate = txt_Birthdate.getText();
String Cas = txt_Cas.getText();
String Helth = txt_Helth.getText();
String Sourc = txt_Sourc.getText();
String Children = txt_Children.getText();
String Adresse = txt_Adresse.getText();
String PhoneNumber = txt_PhoneNumber.getText();
String Demande = txt_Demande.getText();
String Procédurs = txt_Procédurs.getText();
Connection conn = null;
PreparedStatement pstm = null;
try{
Class.forName ("com.myql.jdbc.Driver");
conn = DriverManager.getConnection("jdbc:mysql://localhost/infocarte","root","root");
pstm = conn.prepareStatement("insert into information values (?,?,?,?,?,?,?,?,?,?,?)");
pstm.setString(1, Number);
pstm.setString(2, Name);
pstm.setString(3, Birthdate);
pstm.setString(4, Cas);
pstm.setString(5, Helth);
pstm.setString(6, Sourc);
pstm.setString(7, Children);
pstm.setString(8, Adresse);
pstm.setString(9, PhoneNumber);
pstm.setString(10, Demande);
pstm.setString(11, Procédurs);
int i = pstm.executeUpdate();
if (i>0){
JOptionPane.showMessageDialog(null, "تم حفظ البيانات");
}
else{
JOptionPane.showMessageDialog(null, "خطأ في حفظ البيانات");
}}
catch(Exception e){
JOptionPane.showMessageDialog(null,e);
}
}