[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 입니다.


답변