source

여러 조인된 테이블에서 where 구에 사용자 지정 열을 사용합니다.

bestscript 2022. 11. 12. 08:30

여러 조인된 테이블에서 where 구에 사용자 지정 열을 사용합니다.

별칭이 있는 사용자 지정 열을 만드는 중입니다.searchColumn이 명령어는 where 구에서 사용해야 합니다.이것이 어떻게 가능한 걸까요?

  SELECT lgs.*,
       lg.*,
       Concat(Ifnull(lgs.beneficiaryfirstname, ''),
       Ifnull(lgs.beneficiarylastname, ''),
       Ifnull(lg.Name, '')) AS
       "searchColumn"
FROM   local_giveaways_submissions lgs
       INNER JOIN local_giveaways lg
               ON lg.giveawayid = lgs.giveawayid
       LEFT JOIN local_giveaways_partners lgp
              ON lgs.partnerid = lgp.partnerid
WHERE  "searchcolumn" LIKE '%asd%' 

업데이트: 검색에는 concat_ws()를 사용하는 것이 좋다고 생각하십니까?

CONCAT_WS(
    '%',
    CONCAT(lgs.FirstName,' ',lgs.LastName),
    lgs.EmailAddress,
    CONCAT(lgs.BeneficiaryFirstName,' ',lgs.BeneficiaryLastName),
    lg.Name,
    lgp.PartnerName
) AS "SearchColumn"

별칭을 참조할 수 없습니다.searchColumn에서WHERE이 에일리어스는 아직 사용할 수 없기 때문에 쿼리와 동일한 수준의 절을 사용합니다.단, MySQL이 오버로드되어 있습니다.HAVING연산자:

SELECT lgs.*, lg.*,
   CONCAT(IFNULL(lgs.beneficiaryfirstname, ''),
   IFNULL(lgs.beneficiarylastname, ''),
   IFNULL(lgs.beneficiarylastname, '')) AS searchColumn
FROM local_giveaways_submissions lgs
INNER JOIN local_giveaways lg
    ON lg.giveawayid = lgs.giveawayid
LEFT JOIN local_giveaways_partners lgp
    ON lgs.partnerid = lgp.partnerid
HAVING
    searchcolumn LIKE '%asd%'     -- this is allowed in MySQL

언급URL : https://stackoverflow.com/questions/67580197/use-custom-column-in-the-where-clause-from-multiple-joined-tables