programing

SELECT * 열의 MySQL 별칭

powerit 2023. 9. 10. 13:08
반응형

SELECT * 열의 MySQL 별칭

저는 같은 표의 데이터를 두 번 사용하는 뷰를 작성하고 있습니다.그 결과 동일한 열 이름이 두 번 나타납니다.

따라서 이 열에 별칭을 부여해야 합니다.제가 그렇게 한다면 다음과 같이 적겠습니다.

SELECT u.* as 'one_*', u2.* as 'two_*'
FROM users u
LEFT JOIN relationships r ON u.id=r.id_one
LEFT JOIN users u2 ON r.id_two=u2.id

하지만 그건 안 돼요.도와주셔서 감사합니다!

편집:

여기 제가 실제로 얻고 있는 데이터가 있습니다.

|  id  | name |  id  | name |
   1     john    2     alex

다음은 제가 얻고 싶은 데이터입니다(계속 사용하면서).SELECT u.*, u2.*):

|  id  | name |  brother_id  | brother_name |
   1     john        2             alex

사용할 수 없습니다.*가명으로별칭은 개별 열에 사용할 수 있습니다.

대신 각 열에 별칭을 붙여야 합니다.

그래서 불행히도 열이 많으면 다음과 같이 해야 합니다.

SELECT u.col1 AS u_col1
    , u.col2 AS u_col2
    , u.col3 AS u_col3
    -- etc
    , u2.col1 AS u2_col1
    , u2.col2 AS u2_col2
    , u2.col3 AS u2_col3
    -- etc
FROM table1 AS u
-- INNER JOIN / LEFT OR RIGHT OUTER JOIN / ,
    table2 AS u2

UNION 쿼리를 사용해 보십시오.

예.

select a.typeid, a.typename from MYTABLE a where a.typeid=3 UNION select a.typeid, a.typename from MYTABLE a where a.typeid=4

그냥 사용하지 않으실 수 있나요?SELECT *그리고 당신의 코드에 다음을 참조합니다.u.field1그리고.u2.field2?

이것이 오래된 질문이라는 것을 알고 있지만 최근에 문제가 생겨 해결책을 생각해 냈습니다.

먼저 테이블을 쿼리하고 열 이름을 가져옵니다.

전과가 있는

"$table_name에서 열 표시"

그런 다음 루프를 사용하여 열 이름에 접두사를 연결합니다.

전의

각($all_columns를 $the_column으로 표시) { $http_select .=', '.$table_name.'.$the_column['필드']. 'alias_'.$the_column['Field']; } 그런 다음 이 문자열을 쿼리에 입력하면 모두 prefix_fixn_name인 다른 값 집합을 얻을 수 있습니다.

별칭을 선택합니다.* mysql >= 5.6에서 확실히 작동합니다.

언급URL : https://stackoverflow.com/questions/8341136/mysql-alias-for-select-columns

반응형