查询:
SELECT ct_cid as level1 FROM cat_tree WHERE ct_sid = $ sid_int AND ct_parent = $ cid_int) UNION(SELECT ct_cid as level2 FROM cat_tree WHERE ct_sid = $ sid_int AND ct_parent IN level1)
该查询应该找到最多2个树节点级别的子节点。
我得到“您的SQL语法有错误;请查看与您的MySQL服务器版本对应的手册,以便在'level1
附近使用正确的语法”“如何在第2个选项中使用第1个选择的结果选择?
答案 0 :(得分:1)
你不需要在第二个SELECT语句周围使用parens ...而且,字段名称和顺序必须在两个SQL-Select语句中匹配。您可能需要的是
select 1 as LevelID, CT_CID from cat_tree where...
UNION
select 2 as levelID, CT_CID from cat_tree where ...
现在,问题的另一半......使用第一个结果...将查询重做为SECOND查询中的子选择......
select 1 as LevelID, CT_CID
from cat_tree
where ct_sid = $sid_int
and ct_parent = $cid_int
union
select 2 as LevelID, CT_CID
from cat_tree
where ct_sid = $sid_int
and ct_parent IN
( select ct_cid
from cat_tree
where ct_sid = $sid_int
and ct_parent in $cid_int )
请注意,仅在SUB-SELECT中需要parens,而不是UNION select。不了解您的数据,可能会有更简单的方法来实现您的目标
答案 1 :(得分:0)
这不是SQL的工作原理。 IN需要一个值列表(或创建列表的子选择)。
请发布您要查询的表格的表格结构,并说明字段的含义。那么也许我们可以提供帮助。
答案 2 :(得分:0)
这是未经测试的,但您所追求的结构可能是:
SELECT ct_cid as level2 FROM cat_tree WHERE ct_sid=$sid_int AND ct_parent IN
(
SELECT ct_cid as level1 FROM cat_tree WHERE ct_sid=$sid_int AND ct_parent =$cid_int)
)