Sqlite 在INSERT INTO语句中运行COUNT时遇到问题
我很难理解这句话。它的思想是用数据库中每个播放器的一行值初始化一个表,但我无法从满是搜索选项卡的浏览器中找出我做错了什么。我只知道我的语法显然是垃圾Sqlite 在INSERT INTO语句中运行COUNT时遇到问题,sqlite,Sqlite,我很难理解这句话。它的思想是用数据库中每个播放器的一行值初始化一个表,但我无法从满是搜索选项卡的浏览器中找出我做错了什么。我只知道我的语法显然是垃圾 INSERT INTO tblKebabs (TransactionID, PlayerID, Amount, Description, Timestamp) SELECT (COUNT(tblPlayers.PlayerID)) AS TransactionID, tblPlayers.PlayerID AS PlayerID,
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;
我不知道你想在这里做什么,但如果只是为了计数,试试这个
ROW_NUMBER() OVER(ORDER BY tblPlayers.PlayerID) AS TransactionID
如果希望TransactionID列自动递增,则必须在CREATE语句中定义它。
如果您已经将其定义为整数主键,那么它已经是自动递增的,您不需要更改某些内容。
如果您没有上述内容,那么您必须使用INTEGER主键为该列重新创建表,因为SQLite不允许使用ALTER进行此类更改。现在,您可以从语句中省略此列:
INSERT INTO tblKebabs
(PlayerID, Amount, Description, Timestamp)
SELECT
PlayerID,
0 as Amount,
'Initializer',
CURRENT_TIMESTAMP
FROM tblPlayers
WHERE PlayerID > 0;
SELECT语句中不需要别名。
我还使用了当前的时间戳。你能发布整个声明吗。我要看看你是怎么分组的。有人编辑了这篇文章,破坏了我键入的代码。这不是原来的帖子,信息不见了,谢谢karel。我将不得不重新编辑的问题,使代码是完整的,而不是删除-编辑,谢谢你修复它,这是更好的。TBH,@forpas下面的答案是最好的-我不知道你为什么要在ID字段中输入一个计数-这不是唯一的开始。如果出于某种原因,它确实是您需要的计数,那么您需要按字段分组,以便实际获得一个计数值。我将计数放入ID字段中,因为我是noobcore,一开始不知道如何将整数字段定义为主键。当时这似乎是个好主意:谢谢你。