在Java中查询 - 子查询出错还是什么?

时间:2016-01-30 02:10:17

标签: java mysql

我对此查询有疑问。我花了差不多一个小时试图纠正它但仍然出错。

继承我的代码:

sql = "INSERT INTO tbl_case \n" +
                    "(Case_ID, Employee_ID, Patient_ID, Chief_Complaint, Date) \n" +
                    "VALUES \n" +
                    "(\n" +
                    "   '',\n" +
                    "   'EMP0001',\n" +
                    "   '(SELECT Patient_ID from tbl_patient WHERE ID_no = '"+getPatient_ID()+"')',\n" +
                    "   '"+txtcc.getText()+"',\n" +
                    "   '"+time+"'\n" +
                    ")";
                dp.sop("Query 'Create Case': "+sql);
                dp.Insertion(sql);

注意dp代表我继承方法的类。 dp.Selection是我用于检索数据的简单executeQuery。 dp.Insertion用于更新。

以下是String中查询的输出:

Query 'Create Case': INSERT INTO tbl_case 
(Case_ID, Employee_ID, Patient_ID, Chief_Complaint, Date) 
VALUES 
(
    '',
    'EMP0001',
    '(SELECT Patient_ID from tbl_patient WHERE ID_no = '10000201117')',
    'Head Ache',
    '2016-01-30 09:55:27'
)

并且错误是附近的mysql语法错误:

'10000201117)',
    'Head Ache',
    '2016-01-30 10:07:08'
)' at Line 7
有人发现什么错了吗?我正在使用xampp中的mysql。

2 个答案:

答案 0 :(得分:1)

由于(SELECT Patient_ID from tbl_patient WHERE ID_no = '10000201117')是单引号,您可能需要尝试将10000201117放在双引号中。

例如:

'(SELECT Patient_ID from tbl_patient WHERE ID_no = "10000201117")'

答案 1 :(得分:1)

我认为你不需要用引号括起SELECT语句。 就像现在一样,此部分'(SELECT Patient_ID from tbl_patient WHERE ID_no = '被解释为值而不是查询的一部分。

尝试:(SELECT ...)代替'(SELECT ...)'