У меня есть сложный запрос, который выполняет несколько совпадений по нескольким столбцам, а затем заказы по релевантности.MySQL CASE WHEN where where вызывает отказ
Все работает отлично, пока я не добавить WHERE 'rank' > 0
Это возвращает пустой набор результатов.
Если я удаляю инструкцию «WHERE», тогда я вижу все результаты с наивысшими совпадениями в верхней части.
Может ли кто-нибудь помочь мне разобраться «ГДЕ» :-D Я ошибаюсь!
SELECT *, CASE WHEN companyName = 'gfdgfs' THEN 2 ELSE 0 END
+ CASE WHEN companyName LIKE '%gfdgfs%' THEN 1 ELSE 0 END
+ CASE WHEN companyName = 'potato' THEN 2 ELSE 0 END
+ CASE WHEN companyName LIKE '%potato%' THEN 1 ELSE 0 END
+ CASE WHEN address1 = 'gfdgfs' THEN 2 ELSE 0 END
+ CASE WHEN address1 LIKE '%gfdgfs%' THEN 1 ELSE 0 END
+ CASE WHEN address1 = 'potato' THEN 2 ELSE 0 END
+ CASE WHEN address1 LIKE '%potato%' THEN 1 ELSE 0 END
AS rank
FROM clients
WHERE rank > 0
ORDER BY rank
EDIT
я удалил одинарные кавычки rank
слова и теперь получить «неизвестный ранг столбца в котором пункт»
Удалить одиночные кавычки из 'Rank' в обоих местах и попытаться – MusicLovingIndianGirl
Неизвестный ранг столбца в выражении WHERE, если Я делаю это так, по крайней мере, это что-то - я маскировал проблему, но как мне это исправить? :-P –
Я не думаю, что MySQL будет поддерживать предложение WHERE' с 'aliases' - проверьте http://stackoverflow.com/questions/200200/can-you-use-an-alias-in-the-where- clause-in-mysql – MusicLovingIndianGirl