我有点难以理解这个说法。这个想法是要为数据库中的每个播放器初始化具有一行值的表,但是我无法从充满搜索选项卡的浏览器中弄清楚我做错了什么。我所知道的显然是我的语法是垃圾。
INSERT INTO tblKebabs
(TransactionID, PlayerID, Amount, Description, Timestamp)
SELECT
(COUNT(tblPlayers.PlayerID)) AS TransactionID,
tblPlayers.PlayerID AS PlayerID,0 as Amount,
"Initializer" as Description,"now" AS Timestamp)
FROM tblPlayers
WHERE tblPlayers.PlayerID > 0;
答案 0 :(得分:3)
如果您希望TransactionID
列为AUTOINCREMENT
,则必须在CREATE
语句中对其进行定义。
如果您已经将其定义为INTEGER PRIMARY KEY
,那么它已经是AUTOINCREMENT
,则无需进行任何更改。
如果您没有上述任何内容,则必须使用INTEGER PRIMARY KEY
为此列重新创建表,因为SQLite不允许使用ALTER
进行此类更改。
现在您可以从语句中省略此列:
INSERT INTO tblKebabs
(PlayerID, Amount, Description, Timestamp)
SELECT
PlayerID,
0 as Amount,
'Initializer',
CURRENT_TIMESTAMP
FROM tblPlayers
WHERE PlayerID > 0;
SELECT
语句中不需要别名。
我也使用了CURRENT_TIMESTAMP
。
答案 1 :(得分:0)
我不确定您要在这里做什么,但是如果这只是计数,请尝试
ROW_NUMBER() OVER(ORDER BY tblPlayers.PlayerID) AS TransactionID