mysql
  • sql
  • subquery
  • 2014-02-10 89 views -4 likes 
    -4

    您可以检查我的代码吗?子查询返回多于1行 - netbeans&mysql

    INSERT INTO tbl_bed 
    (status,wardID,roomID) 
        VALUES ('"+ cb_bedStatus.getSelectedItem() +"', 
           (SELECT wardID FROM tbl_ward 
           WHERE wardName='"+ cb_wardname.getSelectedItem().toString() +"' 
    AND category='"+ cb_ward.getSelectedItem().toString() +"'), 
        (SELECT roomID FROM tbl_room 
         WHERE roomNo='"+ cb_roomNo.getSelectedItem().toString() +"')) 
    

    我得到这个错误,当我运行程序“子查询返回多于1行”。

    即时通讯使用netbeans & mysql。

    +1

    错误非常明显。您的子选择将多行返回到仅允许一个行/字段的上下文中。这与netbeans完全无关。这完全是你编写sql的一个问题。 –

    +0

    你的select语句放入你的子查询中显然会返回多于mysql的行中不允许的行。 – Scorpion

    回答

    1

    你可以使用

    sql = "INSERT INTO tbl_bed (status, wardID, roomID) " 
        + "SELECT '"+ cb_bedStatus.getSelectedItem() +"', b.wardID, c.roomID " 
        + "FROM tbl_ward b, tbl_room c " 
        + "WHERE b.wardName='"+ cb_wardname.getSelectedItem().toString() +"' " 
        + "AND b.category='"+ cb_ward.getSelectedItem().toString() +"' " 
        + "AND c.roomNo='"+ cb_roomNo.getSelectedItem().toString() +"' " 
    

    如果没有的SQL注入攻击的风险。否则,将相同的SQL放入准备好的语句中。

    相关问题