[mysql] CONCAT 조건으로 MySQL 선택
나는 이것을 내 마음 속으로 컴파일하려고한다. 나는 이름과 성 필드가있는 테이블을 가지고 있고 “Bob Jones”또는 “Bob Michael Jones”와 같은 문자열을 가지고있다.
예를 들어 이름에는 Bob이 있고성에는 Michael Jones가 있습니다.
그래서 노력하고 있어요
SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast
FROM users
WHERE firstlast = "Bob Michael Jones"
그러나 그것은 알려지지 않은 열 “firstlast”를 말한다 .. 누구든지 제발 도와 줄 수 있습니까?
답변
제공하는 별칭은 쿼리 출력용이며 쿼리 자체에서는 사용할 수 없습니다.
다음 식을 반복 할 수 있습니다.
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"
답변
이 시도:
SELECT *
FROM (
SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast
FROM users
) a
WHERE firstlast = "Bob Michael Jones"
답변
SELECT needefield, CONCAT(firstname, ' ',lastname) as firstlast
FROM users
WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones"
답변
CONCAT_WS ()를 사용하십시오.
SELECT CONCAT_WS(' ',firstname,lastname) as firstlast FROM users
WHERE firstlast = "Bob Michael Jones";
첫 번째 인수는 나머지 인수의 구분 기호입니다.
답변
시험:
SELECT neededfield, CONCAT(firstname, ' ', lastname) as firstlast
FROM users
WHERE CONCAT(firstname, ' ', lastname) = "Bob Michael Jones"
쿼리를 하위 선택으로 수행하지 않는 한 쿼리의 where 절에서 별칭 firstlast를 사용할 수 없습니다.
답변
CONCAT
식 을 반복 하거나 하위 쿼리를 사용 하는 대신 사용할 수 있습니다. HAVING
열 별칭을 인식 하는 절 을 사용할 수 있습니다 .
SELECT
neededfield, CONCAT(firstname, ' ', lastname) AS firstlast
FROM
users
HAVING firstlast = "Bob Michael Jones"
다음은 작동하는 SQL Fiddle 입니다.