Mysql “in/ALL/ANY子查询”中的未知列
为什么我会犯这个错误?错误显示在OR子句中,但我正在SELECT语句中选择gl_IDMysql “in/ALL/ANY子查询”中的未知列,mysql,Mysql,为什么我会犯这个错误?错误显示在OR子句中,但我正在SELECT语句中选择gl_ID ; DECLARE v_firstDate DATETIME SET @p_ID = 368 SELECT SUBDATE(NOW(), 1) INTO v_firstDate; SELECT t_ID, t_firstName, t_lastName FROM t_table WHERE ((@p_ID IN ( SELECT tt_ID FROM tt_tableTwo
; DECLARE v_firstDate DATETIME
SET @p_ID = 368
SELECT SUBDATE(NOW(), 1) INTO v_firstDate;
SELECT t_ID, t_firstName, t_lastName
FROM t_table
WHERE
((@p_ID IN (
SELECT tt_ID
FROM tt_tableTwo
INNER JOIN st_stats ON (st_ID = tt_ID)
INNER JOIN da_data ON (da_ID = st_ID AND da_name IN ("allCompanies", "allglobals"))
)
))
OR
(
(gl_ID IN ( //problem is here
SELECT gl_ID
FROM gl_globals
INNER JOIN tr_transport ON (tr_id = gl_caseID AND tr_idOther = @p_ID)
INNER JOIN co_countries ON (co_ID = gl_ID AND co_ID = @p_ID)
)
)
)
错误消息:
“in/ALL/ANY子查询”中的未知列“gl\u ID”
我应该使用AS还是HAVING?gl\u ID在or子句中不可访问,因为它在t\u表中不存在。第一个FROM子句下的内部联接解决了这个问题
; DECLARE v_firstDate DATETIME
SET @p_ID = 368
SELECT SUBDATE(NOW(), 1) INTO v_firstDate;
SELECT t_ID, t_firstName, t_lastName
FROM t_table
INNER JOIN gl_globals ON (t_ID = gl_ID) // fix
WHERE
((@p_ID IN (
SELECT tt_ID
FROM tt_tableTwo
INNER JOIN st_stats ON (st_ID = tt_ID)
INNER JOIN da_data ON (da_ID = st_ID AND da_name IN ("allCompanies", "allglobals"))
)
))
OR
(
(gl_ID IN (
SELECT gl_ID
FROM gl_globals
INNER JOIN tr_transport ON (tr_id = gl_caseID AND tr_idOther = @p_ID)
INNER JOIN co_countries ON (co_ID = gl_ID AND co_ID = @p_ID)
)
)
)
您的gl_ID是否存在于t_table中?@LoïcDiBenedetto否,它存在于gl_globalsTry中,在外部和内部查询中使用tablename.gl_ID格式,以便mysql准确地知道您引用的gl_ID字段。查询中的括号太多了。不过我不理解您的说法,如果将未知字段与子查询的结果进行比较,则t_表的作用域中不存在第一个gl_ID字段