在我的INSERT INTO语句中运行COUNT时遇到问题

时间:2019-02-22 04:16:13

标签: sqlite

我有点难以理解这个说法。这个想法是要为数据库中的每个播放器初始化具有一行值的表,但是我无法从充满搜索选项卡的浏览器中弄清楚我做错了什么。我所知道的显然是我的语法是垃圾。

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;

2 个答案:

答案 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
相关问题