mysql
  • sql
  • subquery
  • 2014-02-10 65 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放入準備好的語句中。

    相關問題