Java “可以价值”;“文字”;与select语句组合在一个";在“;
这是我在这里的第一篇帖子,如果有什么不合适的地方,请提前接受我的道歉。 我也是一个新手,试图学习一些Java和JDBC。我想知道是否有可能将硬编码值与SQL插入中的select语句结合起来。 我正在尝试下面的语句,它给出了一个错误“标量子查询只允许返回一行。” 提前谢谢你的建议Java “可以价值”;“文字”;与select语句组合在一个";在“;,java,sql,jdbc,insert,derby,Java,Sql,Jdbc,Insert,Derby,这是我在这里的第一篇帖子,如果有什么不合适的地方,请提前接受我的道歉。 我也是一个新手,试图学习一些Java和JDBC。我想知道是否有可能将硬编码值与SQL插入中的select语句结合起来。 我正在尝试下面的语句,它给出了一个错误“标量子查询只允许返回一行。” 提前谢谢你的建议 String sql = "INSERT INTO MEMBER_LESSONS " + " (LESSON_ID, BOOKING_DT, LESSON_DT, LESSON_TIME,
String sql = "INSERT INTO MEMBER_LESSONS "
+ " (LESSON_ID, BOOKING_DT, LESSON_DT, LESSON_TIME, LESSON_FEE, MEMBER_ID_FK,PRO_ID_FK)"
+ " VALUES (DEFAULT, '2020-01-10', '2020-01-15', '14:00', 50.0,"
+ " (SELECT ml.MEMBER_ID_FK FROM MEMBERS m inner join MEMBER_LESSONS ml on ml.MEMBER_ID_FK = m.MEMBER_ID"
+ " where m.MEMB_NAME = ?),"
+ " (SELECT ml.PRO_ID_FK FROM GOLF_PRO gp inner join MEMBER_LESSONS ml on ml.PRO_ID_FK = gp.PRO_ID"
+ " AND gp.PRO_NAME = 'Tiger Dojen'))";
对。您的代码有点难以理解,但您可以不使用这些值。大概是这样的:
INSERT INTO MEMBER_LESSONS (BOOKING_DT, LESSON_DT, LESSON_TIME, LESSON_FEE, MEMBER_ID_FK,PRO_ID_FK)
SELECT '2020-01-10', '2020-01-15', '14:00', 50.0,
(SELECT ml.MEMBER_ID_FK
FROM MEMBERS m
WHERE m.MEMB_NAME = ?
),
(SELECT ml.PRO_ID_FK
FROM GOLF_PRO gp
WHERE gp.PRO_NAME = 'Tiger Dojen'
)
注:
- 我从列列表中删除了
,并从LESSON\u ID
中删除了SELECT
DEFAULT
- 我删除了子查询中的连接;它们似乎没有必要
- 您没有指定正在使用的数据库。有些可能需要
子句,例如from
from dual
"INSERT INTO MEMBER_LESSONS "
+ " (LESSON_ID, BOOKING_DT, LESSON_DT, LESSON_TIME, LESSON_FEE, MEMBER_ID_FK,PRO_ID_FK)"
+ " VALUES (DEFAULT, '2020-01-10', '2020-01-15', '14:00', 50.0,"
+ " (SELECT m.MEMBER_ID FROM MEMBERS m WHERE m.MEMB_NAME = ?),"
+ " (SELECT gp.PRO_ID FROM GOLF_PRO gp WHERE gp.PRO_NAME = 'Tiger Dojen'))";
甚至
"INSERT INTO MEMBER_LESSONS "
+ " (BOOKING_DT, LESSON_DT, LESSON_TIME, LESSON_FEE, MEMBER_ID_FK,PRO_ID_FK) "
+ "SELECT '2020-01-10', '2020-01-15', '14:00', 50.0, m.MEMBER_ID, gp.PRO_ID "
+ "FROM MEMBERS m, GOLF_PRO gp "
+ "WHERE m.MEMB_NAME = ? AND gp.PRO_NAME = 'Tiger Dojen'";
非常感谢你的帮助。多亏了你,我现在可以开始跑步了。