mysql group concat неизвестная ошибка столбца - PullRequest
0 голосов
/ 27 мая 2018

Я пытаюсь найти запрос по имени и фамилии

вот мой запрос

SELECT d.title, GROUP_CONCAT(u.firstName,' ',u.lastName) as fullname
FROM DEALS d 
left JOIN USER u ON u.idUser = d.userId 
WHERE ((d.title LIKE  '%goutham%' OR d.keywords LIKE  '%goutham%')
OR fullname LIKE  '%goutham%') AND d.isPublic=1

Но я получил

Неизвестный столбец'полное имя' в 'где предложение'

Ответы [ 2 ]

0 голосов
/ 27 мая 2018

Непосредственной причиной вашей проблемы является то, что вы не можете ссылаться на псевдоним, определенный в предложении SELECT в предложении WHERE того же запроса.Решением будет повторение всего выражения вместо использования псевдонима.Однако, основываясь на вашем комментарии, вы действительно хотите проверить имя, так что просто сделайте это:

SELECT
    d.title,
    CONCAT(u.firstName, ' ', u.lastName) AS fullname
FROM DEALS d 
LEFT JOIN USER u
    ON u.idUser = d.userId 
WHERE
    (d.title LIKE '%goutham%' OR
    d.keywords LIKE '%goutham%' OR
    u.firstName LIKE  '%goutham%') AND d.isPublic = 1;
0 голосов
/ 27 мая 2018

Нельзя использовать псевдоним столбца в where.Это не имеет никакого отношения к остальной части вашего запроса.

У вас нет GROUP BY, поэтому я подозреваю, что GROUP_CONCAT() не предназначен.Вместо этого вы хотите CONCAT().Вы можете повторить выражение в WHERE, но я думаю, что вы должны посмотреть в каждом компоненте:

SELECT d.title, CONCAT(u.firstName, ' ', u.lastName) as fullname
FROM DEALS d left JOIN USER
     u
     ON u.idUser = d.userId 
WHERE (d.title LIKE '%goutham%' OR
       d.keywords LIKE '%goutham%' OR
       u.firstName LIKE '%goutham%' OR
       u.lastName LIKE '%goutham%'
      ) AND
      d.isPublic = 1;

Если вы заботитесь о производительности и ищете слова, то вы можете заглянуть в полный MySQLВозможности текстового индекса.

Если вы все еще хотите посмотреть на комбинацию, я бы рекомендовал повторить выражение:

WHERE (d.title LIKE '%goutham%' OR
       d.keywords LIKE '%goutham%' OR
       CONCAT(u.firstName, ' ', u.lastName) LIKE '%goutham%'
      ) AND
      d.isPublic = 1;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...