我真的是个新手,我的sql和im试图创建一些视图,但是mysql错误地大喊大叫
错误1349 (HY000):视图的SELECT在FROM子句中包含一个子查询
如何从条件中删除子查询并在视图中获得相同的结果?
SELECT actual,
curr,
CASE WHEN actual > anterior THEN 'raise'
WHEN actual < anterior THEN 'drop' ELSE 'nothing'
END as 'status'
FROM (
SELECT o.i_price as actual, o.i_currency as curr,
(
SELECT i.i_price
FROM Info i
WHERE i.i_article_id = 1
AND i.i_insert < o.i_insert
ORDER BY i.i_insert DESC LIMIT 1
) AS anterior
FROM Info o
WHERE o.i_article_id = 1
ORDER BY o.i_insert
DESC LIMIT 1 ) as q发布于 2016-08-23 20:06:15
在创建视图期间不能使用dinamica子查询,因此应该为子查询创建适当的视图。
create view my_q as
SELECT o.i_price as actual, o.i_currency as curr,
(
SELECT i.i_price
FROM Info i
WHERE i.i_article_id = 1
AND i.i_insert < o.i_insert
ORDER BY i.i_insert DESC LIMIT 1
) AS anterior
FROM Info o
WHERE o.i_article_id = 1
ORDER BY o.i_insert
DESC LIMIT 1调用顶部视图中的视图。
create view my_top_view as
SELECT actual,
curr,
CASE WHEN actual > anterior THEN 'raise'
WHEN actual < anterior THEN 'drop' ELSE 'nothing'
END as 'status'
FROM my_q;有了这个,演出就会受挫。但是要克服错误,就不能使用子查询动态。如果可以的话,最好重写查询。
发布于 2018-04-12 05:32:04
视图的选择包含一个子查询错误:您可以解决这个问题。使用mysqlworkbench连接mysql。并从mysqlworkbench运行create视图脚本。看起来不错
https://stackoverflow.com/questions/39109513
复制相似问题