表结构:TCUSTOMER
--------------------表一
cust_no   web_id200601     null
200602     null
200603     null
TORDETAIL
--------------------表二
cust_no     order_no200603      0301
200604      0302
200605      0303cust_no = request.getParameter("cust_no");//接收cust_no编号
String order_no = request.getParameter("order_no");//接收order_no号码
String web_id = request.getParameter("web_id");//接收用户名dataObj.setCust_no(cust_no);
dataObj.setOrder_no(order_no);
dataObj.setWeb_id(web_id);
UPDATE TCUSTOMER A SET  \n"
                  + " A.WEB_ID = ? ,   \n"
+ " WHERE A.CUST_NO IN (SELECT A.CUST B.CUST B.ORDER_NO FROM TCUSTOMER A,TORDERDETAIL B WHERE A.CUST_NO= ? AND B.CUST_NO = ? AND B.ORDER_NO = ?)pstmt.setString(1,mDo.getWeb_id());
pstmt.setString(2,mDo.getCust_no());
pstmt.setString(3,mDo.getCust_no());
pstmt.setString(4,mDo.getOrder_no());
在更新用户的web_id字段时候,在表一里面能找到,而且在第二个表里面也能找到,并且cust_no和order_no都能,是不是这样写的呢?

解决方案 »

  1.   

    可以这样写吗?其实意思就是这样的。只不过通不过。UPDATE TCUSTOMER A TORDERDETAIL B SET A.WEB_ID = ? WHERE A.CUST_NO= ? AND B.CUST_NO = ? AND B.ORDER_NO = ?
    pstmt.setString(1,mDo.getWeb_id());
    pstmt.setString(2,mDo.getCust_no());
    pstmt.setString(3,mDo.getCust_no());
    pstmt.setString(4,mDo.getOrder_no());
      

  2.   

    这条语句是不是正确的?UPDATE TCUSTOMER A SET A.WEB_ID = ? WHERE exists (SELECT A.CUST B.CUST B.ORDER_NO FROM TCUSTOMER A,TORDERDETAIL B WHERE A.CUST_NO= ? AND B.CUST_NO = ? AND B.ORDER_NO = ?)只有exists中查询结果为真,前面的update才会执行?
      

  3.   

    原来中语法错了,应该是:UPDATE TCUSTOMER SET WEB_ID = 'yiqing' WHERE exists (SELECT A.CUST_NO,B.CUST_NO,B.ORDER_NO FROM TCUSTOMER A,TORDERDETAIL B WHERE A.CUST_NO='200603000234' AND B.CUST_NO = '200603000234' AND B.ORDER_NO = '20060307000249')可是这样的话。tcustomer 表中的所有web_id全改了。可我还要加上一条。cust_no=? ,也就是修改web_id ,只修改cust_no='20063000234'的
      

  4.   

    是不是这样:UPDATE TCUSTOMER SET WEB_ID = 'yiqing' WHERE cust_no='200603000234' and exists (SELECT A.CUST_NO,B.CUST_NO,B.ORDER_NO FROM TCUSTOMER A,TORDERDETAIL B WHERE A.CUST_NO='200603000234' AND B.CUST_NO = '200603000234' AND B.ORDER_NO = '20060307000249')