Выбор 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')