Возникли проблемы при запуске COUNT в моем операторе INSERT INTO - PullRequest
0 голосов
/ 22 февраля 2019

У меня небольшие проблемы с тем, чтобы разобраться с этим утверждением.Идея состоит в том, чтобы инициализировать таблицу с одной строкой значений для каждого игрока в базе данных, но я не могу понять из браузера, полного вкладок поиска, что я делаю неправильно.Все, что я знаю, по-видимому, мой синтаксис мусор.

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 голосов
/ 22 февраля 2019

Если вы хотите, чтобы столбец 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.

0 голосов
/ 22 февраля 2019

Я не уверен, что вы пытаетесь сделать здесь, но если дело только в подсчете, попробуйте это

ROW_NUMBER() OVER(ORDER BY tblPlayers.PlayerID) AS TransactionID
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...