【发布时间】:2010-10-12 14:34:40
【问题描述】:
我对 MySQL 中的子查询功能感到很困惑。
对于我的示例,我使用 3 个表:
adr 包含地址 adr_acc 包含有权访问地址的组或用户 usr_grp 包含属于一个组的用户
select * from adr where
adr.adr_id in
(select ac1.adr_id from adr_acc as ac1 where
(
(ac1.acc_type = 'U' and ac1.acc_id = '".$s['user']."') or
(ac1.acc_type = 'G' and ac1.acc_id in
(select ug1.grp_id from usr_grp as ug1 where ug1.usr_id = '".$s['user']."')
)
)
)
我收到一个错误:
1054 - “IN/ALL/ANY 子查询”中的未知列“adr.adr_id”
我错过了什么?
【问题讨论】:
-
你能发布(相关的)列定义吗?
-
如果不存在则创建表
adr(idvarchar(20) 整理 latin1_german1_ci 不为空,) 如果不存在则创建表adr_acc(adr_idvarchar(20) 整理 latin1_german1_ci 不为空,acc_typevarchar(1) collate latin1_german1_ci NOT NULL,acc_idvarchar(20) collate latin1_german1_ci NOT NULL, 主键 (adr_id,acc_type,acc_id) ) 如果不存在则创建表 @987usr_idvarchar(20) collate latin1_german1_ci NOT NULL,grp_idvarchar(20) collate latin1_german1_ci NOT NULL, PRIMARY KEY (usr_id,grp_id))
标签: mysql subquery mysql-error-1054