有些傲慢的家伙会坚持你需要使用数据库序列,但是这取决于你想实现什么,像将与甲骨文合作:或者
INSERT INTO patients VALUES(
(SELECT COUNT(*) FROM patients WHERE name LIKE 'elisa%'),
'b','d',
(SELECT CONCAT('elisa', CASE WHEN COUNT(idname) THEN 0 ELSE COUNT(idname) END) FROM patients WHERE name LIKE 'elisa%'));
,如果你可以在数字差距并具有独特的,越来越多的事情,这样的事情可能证明是比较满意的:
INSERT INTO patients VALUES(
(SELECT NVL(MAX(idname),0)+1 FROM patients WHERE name LIKE 'elisa%'),
'b','d',
CONCAT('elisa', (SELECT NVL(MAX(idname),0)+1 FROM patients WHERE name LIKE 'elisa%')));
请记住,如果你有在同一时间事情多笔交易,这些将无法正常工作。为此,您需要一个数据库序列,但是您将拥有一组所有名称的数字,所以elisa5后面会跟着bob6和joe7。
数据库序列的版本:
INSERT INTO patients VALUES(
patient_name_seq.currval,
'b','d',
CONCAT('elisa',patient_name_seq.nextval));
是您的查询的正常工作? –
@FahadAnjum是啊.. idname,a,c但没有名字。任何想法? – Max70
你插入到你选择的同一张表吗?所以在这个操作之后,新记录将有'a,b'列等于null? – Alex