Итак, у меня есть код, который я использую с Sqlite3:
c.execute("SELECT * FROM (SELECT userid, RANK() OVER (ORDER BY Level DESC) AS Level FROM users) a WHERE userid = 267410788996743168;")
Здесь ничего не возвращается, почему? Я пытаюсь (по команде) получить позицию пользователя в базе данных на основе определенного столбца. (например, Youre ranked 120 out of 5382 users.
) Есть ли более простой способ добиться этого, или мне следует исправить параметр?
1 ответ
Если этот пользователь действительно существует, то единственный способ не получить никаких результатов - это если фактическое значение, которое у вас есть в таблице, будет содержать пробелы, поскольку вы определили столбец как TEXT
.
Попробуйте преобразовать значение в целое число:
SELECT *
FROM (SELECT userid, RANK() OVER (ORDER BY Level DESC) AS Level FROM fishyusers) a
WHERE userid + 0 = 267410788996743168;
Или путем обрезки значения и сравнения со строкой:
SELECT *
FROM (SELECT userid, RANK() OVER (ORDER BY Level DESC) AS Level FROM fishyusers) a
WHERE TRIM(userid) = '267410788996743168';
Если это удастся, вам следует обновить таблицу, чтобы удалить начальные или конечные пробелы из столбца userid
:
UPDATE fishyusers
SET userid = TRIM(userid);
Похожие вопросы
Новые вопросы
python
Python — это мультипарадигмальный многоцелевой язык программирования с динамической типизацией. Он предназначен для быстрого изучения, понимания и использования, а также обеспечивает чистый и унифицированный синтаксис. Обратите внимание, что Python 2 официально не поддерживается с 01.01.2020. Если у вас есть вопросы о версии Python, добавьте тег [python-2.7] или [python-3.x]. При использовании варианта Python (например, Jython, PyPy) или библиотеки (например, Pandas, NumPy) укажите это в тегах.