أحاول تنفيذ الاستعلام التالي:
SELECT user_id, 0 post_id, current_timestamp granted_at
FROM badge_posts
WHERE (:backfill OR user_id IN (:user_ids) OR 0 NOT IN (:post_ids) )
GROUP BY user_id
HAVING count(*) > 1000
لكنني أحصل على خطأ يتعلق بـ :backfill. هل يمكن لأحد أن يخبرني بالسبب؟
أعلم أن هذا استعلام SQL كان يعمل سابقًا عند إنشاء الشارات.
أي شيء يبدأ بـ : هو معامل مسمى يُقصد استبداله بواسطة mini_sql قبل إرساله إلى نظام إدارة قواعد البيانات (DBMS)، وهو ليس لغة SQL صالحة بحد ذاته.
مثال، انظر [2] أدناه:
[1] pry(main)> User.find_by(username: 'anon43915857').id
=> 5
[2] pry(main)> DB.query(
"SELECT id FROM users WHERE username = :username",
{ username: 'anon43915857' }
).first.id
=> 5
[3] pry(main)> DB.query(
"SELECT id FROM users WHERE username = ?",
'anon43915857'
).first.id
=> 5