web-dev-qa-db-ja.com

SELECT *カラムのMySQLエイリアス

同じテーブルからのデータを2回使用するビューを作成しています。その結果、同じ列名が2回表示されます。

したがって、これらの列にエイリアスを与える必要があります。私がそれをやるなら、私はそれを次のように書くでしょう:

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
34
Pioul

*をエイリアスで使用することはできません。エイリアスは個々の列に使用できます。

代わりに、各列にエイリアスを作成する必要があります。

残念ながら、列が多い場合は、次の手順を実行する必要があります。

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
27
Nonym

[〜#〜] 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

1
Matt Healy

SELECT *を使用してから、コードでu.field1u2.field2を参照することはできませんか?

1
Cylindric