2013-04-07 2 views
1
SELECT * FROM events WHERE repeat IS NOT NULL 

Hello! У меня есть ошибка при выборе:Ошибка в SELECT * FROM события WHERE repeat NOT NOT NULL

У вас возникла ошибка в синтаксисе SQL; проверьте руководство, которое соответствует версии сервера MySQL для правильного синтаксиса, чтобы использовать рядом с «IS NOT NULL» в строке 2

Но это нормально, если я делаю то же выбрать с user_id, например:

SELECT * FROM events WHERE user_id IS NOT NULL 

Я задаюсь вопросом, так как имя столбца правильно

Структура моего стола:

create_table "events", :force => true do |t| 
    t.string "title" 
    t.date  "shedule" 
    t.integer "user_id" 
    t.datetime "created_at", :null => false 
    t.datetime "updated_at", :null => false 
    t.string "repeat" 
    end 

ответ

2

Поскольку REPEAT является зарезервированным ключевым словом. Есть два способа убежать от него,

один является обертывание обратные кавычки,

SELECT * FROM events WHERE `repeat` IS NOT NULL 

второй, используя псевдоним, определенный на таблице

SELECT * FROM events e WHERE e.repeat IS NOT NULL 
+0

Прохладный! Большое спасибо! – Gabi

+0

приветствуется ': D' –

+0

Существует третий способ избежать этого: стандартный способ ANSI SQL с использованием двойных кавычек:' 'repeat '' (как это делается во всех других СУБД) –