将视图从 oracle 转换为 mysql
Posted
技术标签:
【中文标题】将视图从 oracle 转换为 mysql【英文标题】:convert view from oracle to mysql 【发布时间】:2016-12-01 11:51:51 【问题描述】:下面是oracle查询,
CREATE OR REPLACE VIEW view1 AS
SELECT t1.col1,t1.col2
FROM (select * FROM table1 asap, table2 pids where asap.parentid= pids.parentid) t1,
(select * from table1 r_asap,table3 ids where r_asap.id=ids.id) t2
WHERE
t1.col2=t2.col2 and
(t2.col3 <>t1.col3 OR
t2.col4<>t1.col4 OR
t2.col5 <>t1.col5 )
order by t1.col1
我需要将其转换为 mysql 视图.. 任何人都可以帮助我
【问题讨论】:
你有没有尝试过? 我试图转换到 mysql 查询,但不是 mysql 视图。以下是 mysql 的查询。我需要查看select t1.col1,t1.col2 from (select asap.* FROM table1 asap, table2 pids where asap.parentid= pids.parentid) t1, (select r_asap.* from table1 r_asap,table3 ids where r_asap.id=ids.id) t2 WHERE t1.col2=t2.col2 and (t2.col3 <>t1.col3 OR t2.col4<>t1.col4 OR t2.col5 <>t1.col5 ) order by t1.col1
我对 t1 和 t2 在 where 条件下的比较感到困惑。 mysql怎么办
我已经发帖回答希望有用
@scaisEdge 嗨,已发布?
【参考方案1】:
这应该是 mysql 兼容的,但总体上使用显式连接(对我来说更具可读性)
由于 mysql 不允许在视图中使用子查询,您必须首先为子选择创建一个视图并在此构建最终视图
CREATE OR REPLACE VIEW view_sub1 AS
SELECT col1, col2
FROM table1 asap
INNER JOIN table2 pids on asap.parentid= pids.parentid;
CREATE OR REPLACE VIEW view_sub2 AS
SELECT c2l2
FROM table1 r_asap
INNER JOIN table3 ids on r_asap.id=ids.id ;
CREATE OR REPLACE VIEW view1 AS
SELECT view_sub1.col1,view_sub1.col2
FROM view_sub1
INNER JOIN view_sub2 on view_sub1.col2=view_sub2.col2
WHERE view_sub2.col3 <>view_sub1.col3
OR view_sub2.col4<>view_sub1.col4
OR view_sub2.col5 <>view_sub1.col5;
【讨论】:
嗨 scaisEdge,错误 SQL 错误 (1349):视图的 SELECT 在 FROM 子句中包含子查询 或者我做了同样的方式..即,创建单独的表然后使用这些表......但是,我试图在一个查询中做......这是不可能的......有两个参考在哪里条件.. 无论如何感谢您的回答...并接受它...以上是关于将视图从 oracle 转换为 mysql的主要内容,如果未能解决你的问题,请参考以下文章