Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 连接表和使用子查询时出现未知列_Mysql - Fatal编程技术网

Mysql 连接表和使用子查询时出现未知列

Mysql 连接表和使用子查询时出现未知列,mysql,Mysql,我已使用以下stackoverflow帖子尝试获取最新日期的记录: 我编写了以下查询: SELECT AR_SQ.SYMBOL, AR_SQ.NAME, AR_SQ.LAST, FF_PS.SECTOR, FF_PS.SECTOR_TAGS, HP.LAST_10_DAYS, HP.YTD_PERF FROM AR_STOCK_QUOTE AR_SQ LEFT JOIN ( SELECT HP.SYMBOL, max(TRADE_DATE) as MaxDate FROM FF_HIST

我已使用以下stackoverflow帖子尝试获取最新日期的记录:

我编写了以下查询:

SELECT AR_SQ.SYMBOL, AR_SQ.NAME, AR_SQ.LAST, FF_PS.SECTOR, FF_PS.SECTOR_TAGS, HP.LAST_10_DAYS, HP.YTD_PERF 
FROM AR_STOCK_QUOTE AR_SQ 
LEFT JOIN (
SELECT HP.SYMBOL, max(TRADE_DATE) as MaxDate 
FROM FF_HISTORICAL_STOCK_PRICE HP
GROUP BY HP.SYMBOL
) 
HP on HP.SYMBOL = AR_SQ.SYMBOL 
JOIN FF_PRIMARY_STOCK_TABLE FF_PS on FF_PS.SYMBOL = AR_SQ.SYMBOL
但是,当我执行此操作时,会收到一条错误消息,提示如下:

错误代码:1054。“字段列表”中的未知列“HP.LAST_10_DAYS”


既然定义了HP,并且它是该表中的一个字段,为什么会出现这种情况?

因为您在select语句上执行联接,而不是在“FF_历史_股价”表上执行联接,所以无法在全局select上使用HP,因为在全局select中没有定义HP

SELECT AR_SQ.SYMBOL, AR_SQ.NAME, AR_SQ.LAST, FF_PS.SECTOR, FF_PS.SECTOR_TAGS, HP.LAST_10_DAYS, HP.YTD_PERF  #3- you cannot use HP here
FROM AR_STOCK_QUOTE AR_SQ 
LEFT JOIN (
# 1- you are not doing ajoin on the table FF_HISTORICAL_STOCK_PRICE HP
# 2- you can use HP on this select 
SELECT HP.SYMBOL, max(TRADE_DATE) as MaxDate 
FROM FF_HISTORICAL_STOCK_PRICE HP
GROUP BY HP.SYMBOL
) 
HP on HP.SYMBOL = AR_SQ.SYMBOL 
JOIN FF_PRIMARY_STOCK_TABLE FF_PS on FF_PS.SYMBOL = AR_SQ.SYMBOLenter code here
现在,将字段添加到join part中的select语句中,它们将出现在结果HP中,并尝试为select使用不同的别名

SELECT AR_SQ.SYMBOL, AR_SQ.NAME, AR_SQ.LAST, FF_PS.SECTOR, FF_PS.SECTOR_TAGS, RS.LAST_10_DAYS, RS.YTD_PERF 
FROM AR_STOCK_QUOTE AR_SQ 
LEFT JOIN (
# add the last_10_days to the fields of you select statement now you can select them
SELECT HP.SYMBOL, max(TRADE_DATE) as MaxDate ,HP.LAST_10_DAYS, HP.YTD_PERF 
FROM FF_HISTORICAL_STOCK_PRICE HP
GROUP BY HP.SYMBOL
) RS on RS.SYMBOL = AR_SQ.SYMBOL  #HP is a result of select statement 
JOIN FF_PRIMARY_STOCK_TABLE FF_PS on FF_PS.SYMBOL = AR_SQ.SYMBOL

因为您是在select语句而不是“FF_HISTORICAL_STOCK_PRICE”表上执行联接,所以无法在全局select上使用HP,因为在全局select中未定义HP

SELECT AR_SQ.SYMBOL, AR_SQ.NAME, AR_SQ.LAST, FF_PS.SECTOR, FF_PS.SECTOR_TAGS, HP.LAST_10_DAYS, HP.YTD_PERF  #3- you cannot use HP here
FROM AR_STOCK_QUOTE AR_SQ 
LEFT JOIN (
# 1- you are not doing ajoin on the table FF_HISTORICAL_STOCK_PRICE HP
# 2- you can use HP on this select 
SELECT HP.SYMBOL, max(TRADE_DATE) as MaxDate 
FROM FF_HISTORICAL_STOCK_PRICE HP
GROUP BY HP.SYMBOL
) 
HP on HP.SYMBOL = AR_SQ.SYMBOL 
JOIN FF_PRIMARY_STOCK_TABLE FF_PS on FF_PS.SYMBOL = AR_SQ.SYMBOLenter code here
现在,将字段添加到join part中的select语句中,它们将出现在结果HP中,并尝试为select使用不同的别名

SELECT AR_SQ.SYMBOL, AR_SQ.NAME, AR_SQ.LAST, FF_PS.SECTOR, FF_PS.SECTOR_TAGS, RS.LAST_10_DAYS, RS.YTD_PERF 
FROM AR_STOCK_QUOTE AR_SQ 
LEFT JOIN (
# add the last_10_days to the fields of you select statement now you can select them
SELECT HP.SYMBOL, max(TRADE_DATE) as MaxDate ,HP.LAST_10_DAYS, HP.YTD_PERF 
FROM FF_HISTORICAL_STOCK_PRICE HP
GROUP BY HP.SYMBOL
) RS on RS.SYMBOL = AR_SQ.SYMBOL  #HP is a result of select statement 
JOIN FF_PRIMARY_STOCK_TABLE FF_PS on FF_PS.SYMBOL = AR_SQ.SYMBOL

那么,如何正确地访问该表中的值呢?我总是尝试在SELECT语句中的值使用不同的别名,并且在出于这个原因加入SELECT语句时使用不同的别名。SQL查询已经足够混乱/复杂。在左联接内部执行SELECT时,必须包含LAST_10_DAYS列(以及将其包含在GROUP BY中或在聚合函数中使用).好的,我用一些注释编辑了答案。您如何理解我的英语很差?我如何正确地执行此操作,然后才能访问该表中的值?我总是尝试为SELECT语句中的值使用不同的别名,以及出于此原因加入SELECT语句时使用不同的别名。SQL查询已经够混乱/复杂了。在左联接的内部进行选择时,您必须包含“最后10天”列(以及将其包含在GROUP BY中或在聚合函数中使用)。好的,我编辑了答案并添加了一些注释,您如何理解我的英语很差抱歉