Выбор MySQL с условием CONCAT

Я пытаюсь скомпилировать это в своем уме. У меня есть таблица с полями firstname и lastname и у меня есть строка типа "Боб Джонс" или "Боб Майкл Джонс" и несколько других.

вещь, я имею, например Боб в первом имени и Майкл Джонс в фамилии

поэтому я пытаюсь

SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast 
  FROM users 
 WHERE firstlast = "Bob Michael Jones"

но он говорит, что неизвестный столбец "firstlast".. может кто-нибудь помочь?

Ответ 1

Алиасы, которые вы указываете, предназначены для вывода запроса - они недоступны в самом запросе.

Вы можете либо повторить выражение:

SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast 
FROM users
WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones"

или оберните запрос

SELECT * FROM (
  SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast 
  FROM users) base 
WHERE firstLast = "Bob Michael Jones"

Ответ 2

Попробуйте следующее:

SELECT * 
  FROM  (
        SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast 
        FROM users 
    ) a
WHERE firstlast = "Bob Michael Jones"

Ответ 3

SELECT needefield, CONCAT(firstname, ' ',lastname) as firstlast 
FROM users 
WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones"

Ответ 4

Используйте CONCAT_WS().

SELECT CONCAT_WS(' ',firstname,lastname) as firstlast FROM users 
WHERE firstlast = "Bob Michael Jones";

Первый аргумент - это разделитель для остальных аргументов.

Ответ 5

Try:

SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast 
  FROM users 
WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones"

Ваш псевдоним firstlast недоступен в предложении where, если вы не выполняете запрос в качестве подвыборки.

Ответ 6

Существует альтернатива повторению выражения CONCAT или использования подзапросов. Вы можете использовать предложение HAVING, которое распознает псевдонимы столбцов.

SELECT 
  neededfield, CONCAT(firstname, ' ', lastname) AS firstlast 
FROM
  users 
HAVING firstlast = "Bob Michael Jones"

Вот рабочий SQL-скрипт.

Ответ 7

1. У меня есть две таблицы table1 и table2 2. В поле table1 указано cert_no и в table2 имя поля cer1,cert2,cert3,cert4,cert5 3. значение, которое не было в table2 (cer1,cert2,cert3,cert4,cert5), только для отображения 4.если обе таблицы имеют одинаковое значение только transfile_file хотят отображать

запрос, который я поставил,

SELECT * FROM table1 WHERE folio = 'KCA00619' AND cm_flag !='X' AND  certificate_no NOT IN
(SELECT CONCAT(certno1,certno2,certno3,certno4,certno5,certno6,certno7,certno8,certno9,certno10) 
FROM table2 WHERE tofolio = '123456')