[英]PHP + SQL - insert value of primary key to another field in the same row
[英]Two INSERT INTO statements for the same row SQL/php
我一直在努力,找不到解决此问题的方法。 我有两个不同的INSERT语句:
INSERT INTO `logList`(`User_ID`) SELECT `User_ID` FROM `userList` WHERE keyname='somevalue';
INSERT INTO `logList`(`ttime`) VALUES (CURRENT_TIMESTAMP);
如果我执行它们,它们当然会插入2个不同的行。 如何制作仅返回一行的单个INSERT
? 先感谢您。
我将假设这是您真正想要的:
INSERT INTO logList (User_ID, ttime)
SELECT User_ID, CURRENT_TIMESTAMP
FROM userList
WHERE keyname = 'somevalue';
我怀疑您是否需要两行,一行包含用户和NULL
的时间,另一行包含NULL
的用户和一个时间的值。
我应该注意,您可以定义loglist
因此ttime
默认为插入时的当前时间戳。 文档中介绍了此类默认值的使用。
如果您这样做,则:
INSERT INTO logList (User_ID)
SELECT User_ID
FROM userList
WHERE keyname = 'somevalue';
将始终设置ttime
。
如您所愿,您可以在一个插入中完成此操作:
INSERT INTO `logList`(`User_ID`, `ttime`)
SELECT `User_ID`, CURRENT_TIMESTAMP
FROM `userList`
WHERE keyname='somevalue';
您有以下命令:
INSERT INTO `logList`(`User_ID`) SELECT `User_ID` FROM `userList` WHERE keyname='somevalue';
INSERT INTO `logList`(`ttime`) VALUES (CURRENT_TIMESTAMP);
这将创建两行,而您要创建单行。 您可以使用一个命令来做到这一点:
insert into loglist(USER_ID, ttime)
select User_ID, now()
from userList
where keyname = 'somevalue';
但是,即使这是一种解决方案,也不是很优雅的解决方案。 你应该alter loglist
和修改ttime
有default
的值CURRENT_TIMESTAMP
,然后您可以简化insert
这样的命令:
insert into loglist(USER_ID)
select User_ID
from userList
where keyname = 'somevalue';
这应该是正常现象,因为您的loglist
列表表可能应该loglist
具有插入时刻的时间戳。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.