1

mysql でクエリを実行できませんでした。わざとやりたくないselect id from roles...

クエリ

select rtu.role_id
from roles r 
where id =(select role_id 
           from roles_to_user rtu 
           where user_id=1)

エラー

ERROR 1054 (42S22): Unknown column 'rtu.role_id' in 'field list'

デスクロールからユーザーへ:

+---------+---------+------+-----+---------+-------+
| Field   | Type    | Null | Key | Default | Extra |
+---------+---------+------+-----+---------+-------+
| user_id | int(11) | NO   | PRI | NULL    |       |
| role_id | int(11) | NO   | PRI | NULL    |       |
+---------+---------+------+-----+---------+-------+

デスクロール:

+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int(11)     | NO   | PRI | NULL    | auto_increment |
| name  | varchar(80) | NO   |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+
4

2 に答える 2

2

このように、内部選択の列を外部で使用することはできません。r.id代わりに選択

select r.id
from roles r 
where id = (select role_id 
            from roles_to_user rtu 
            where user_id = 1)

内部選択が複数のレコードを返す場合、失敗します。代わりjoin

select rtu.role_id
from roles r 
inner join roles_to_user rtu on rtu.role_id = r.id
where rtu.user_id = 1
于 2013-07-09T16:59:47.363 に答える
0

エイリアス rtu は、メインクエリではなく、サブクエリでのみ使用できます。

于 2013-07-09T16:59:47.923 に答える