是一位长期以来的读者,所以感谢迄今为止的所有帮助,如果我在制作这个问题时犯了任何noob错误,我很抱歉!
我正在尝试构建一个已经相当复杂的查询(无论如何),我需要让每一行的一个字段是来自另一个查询的单个结果,使用来自主查询的字段,因为它是WHERE语句
我尝试过使用变量,但似乎你不能在主选择之后设置它们,这是有道理的我猜,但当时我认为select就像foreach循环那样收集行。
需要很长时间来解释数据库的整个结构(这些表是提供给我的,需要保持它们的状态)但我将尝试使用以下示例捕获查询结构。
Select
a.field1,
a.field2,
b.field1,
b.field2,
c.field3,
c.field3,
( select aa.field1 from zz inner join aa on zz.field2 = aa.field3 where zz.field3 = a.field1) as field7
FROM
All the tables and joins
WHERE {some stuff}
底线是主查询完全孤立地工作,当我向它提供伪造的a.field1值时,子查询也能正常工作
但是查询一起运行但只返回field7列的NULL。
我开始尝试将变量设置为a.field1之后的值(对于子查询,但这只会导致智能感知在上面的所有表名上发生。
任何指针都会非常感激!
答案 0 :(得分:0)
AFAIK,您无法直接使用它们。
您的选择是重复子选择:
Select
a.field1,
a.field2,
b.field1,
b.field2,
c.field3,
c.field3,
( select aa.field1 from zz inner join aa on zz.field2 = aa.field3 where zz.field3 = a.field1) as field7
FROM
All the tables and joins
WHERE
( select aa.field1 from zz inner join aa on zz.field2 = aa.field3 where zz.field3 = a.field1) = somevalue;
或者将所有内容都选为子选项:
select result.* from
(Select
a.field1,
a.field2,
b.field1,
b.field2,
c.field3,
c.field3,
( select aa.field1 from zz inner join aa on zz.field2 = aa.field3 where zz.field3 = a.field1) as field7
FROM
All the tables and joins
WHERE {some stuff}) as result
where result.field7 = somevalue
答案 1 :(得分:0)
会这样做吗?
Select a.field1,
a.field2,
b.field1,
b.field2,
c.field3,
c.field3,
aa.Field1 as field7
FROM All the tables and joins
LEFT JOIN ( select aa.field1,
zz.Field3
from zz inner join aa on zz.field2 = aa.field3) aa
ON aa.field3 = a.field1
WHERE {some stuff}