source

SQL 쿼리에서 알 수 없는 열이 참조되는 이유

lovecheck 2022. 11. 18. 21:30
반응형

SQL 쿼리에서 알 수 없는 열이 참조되는 이유

SQL Anywhere를 경유하지 않고 MariaDB에 대해 실행할 SQL 쿼리를 업데이트 중입니다.실행 중인 쿼리 중 하나에서 오류가 발생했습니다.

Error Code: 1054. Unknown column 'choice' in 'field list'

이것은 이 쿼리에 대한 것입니다.

   SELECT 
    (select firstname||' '||lastname||'  ('||service||')' from staff_members where id_number = customer_assignment_reviews.staff_member_id) as Rep,
    (select customer_firstname||' '|| customer_lastname from customers where id_number = customer_assignment_reviews.cs_id) as Cus,
    last_modified as "Response Date",replace(review_reason,'’','') as "Reason",
    (Select choice = CASE
     when accepted = 0 then 'No'
     when accepted = 1 then 'Yes'
     end) as "Accepted?"
    FROM customer_assignment_reviews
    where staff_member_id in (Select id_number from kar.staff_members where division_id = 6)
    and "Response Date" between today() - 7  and today() /* Date Range */
    and "Accepted?" = 'No'
    Order by 3 desc

이 에러 메시지는 들리는 것처럼 간단합니까?단순히 "선택"이라는 열이 목표 테이블에 존재하지 않는다고 말하는 건가요?

이 코드가 존재하지 않는 열을 참조하는 이유를 설명하려고 합니다.런타임에 뭔가 예상할 수 있을까요?

에서는 서브쿼리를 사용할 필요가 없습니다.SELECT목록.

SELECT
-- ...
(Select choice = CASE
     when accepted = 0 then 'No'
     when accepted = 1 then 'Yes'
     end) as "Accepted?"

=>
SELECT
     CASE
       when accepted = 0 then 'No'
       when accepted = 1 then 'Yes'
     end as "Accepted?"

추가 구문SELECT alias = expression는 T-SQL에만 고유합니다.

SELECT alias = 1 
<=>
SELECT 1 AS alias

이게 무슨 뜻이죠?

(Select choice = CASE
 when accepted = 0 then 'No'
 when accepted = 1 then 'Yes'
 end) as "Accepted?"

매우 중요한 것은select여기에서는 필요 없습니다.다음과 같은 경우가 있습니다.

(case when accepted = 0 then 'No'
      when accepted = 1 then 'Yes'
 end) as is_accepted  -- prefer to not have to need escape characters

한다면accepted는, 이러한 2개의 값만을 취하기 때문에, 다음과 같이 간단하게 할 수 있습니다.

elt(accepted + 1, 'No', 'Yes') as is_accepted

언급URL : https://stackoverflow.com/questions/57826658/why-would-unknown-column-be-referenced-in-sql-query

반응형