我对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']."')
)
)
)
我收到错误:
我错过了什么?
答案 0 :(得分:0)
ARGGGGGGGGGGGGGG - 我很蠢,很抱歉这样的事情让人觉得非常愚蠢。
SELECT *
FROM adr
WHERE 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 ']."')
)
))
这是正确的查询。