12
返回列表 发新帖
楼主: liyihongcug

mysql视图不能用union 2个表

[复制链接]
论坛徽章:
18
授权会员
日期:2005-10-30 17:05:33美羊羊
日期:2015-03-04 14:48:58马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11紫蜘蛛
日期:2012-02-21 15:06:16嫦娥
日期:2012-02-21 15:05:212012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282009日食纪念
日期:2009-07-22 09:30:00数据库板块每日发贴之星
日期:2009-02-26 01:01:03
11#
 楼主| 发表于 2011-9-14 15:56 | 只看该作者
本帖最后由 liyihongcug 于 2011-9-21 20:30 编辑

http://zh-cn.w3support.net/index.php?db=so&id=514817这样做 是可以的
CREATE VIEW vw_product_services AS
SELECT DISTINCT products.pid AS id,
                products.pname AS name,
                products.p_desc AS description,
                products.p_loc AS location,
                products.p_uid AS userid,
                products.isaproduct AS whatisit
           FROM products
          UNION
          SELECT DISTINCT services.s_id AS id,
                services.s_name AS name,
                services.s_desc AS description,
                services.s_uid AS userid,
                services.s_location AS location,
                services.isaservice AS whatisit
           FROM services

但是如果一个表 是fedarated 引擎表 将会错误(含有fedarated 引擎的表不能union)
普通表 是可以做view

对于实际应用的fedarated连接多台机器的情况
ERROR 1271 : Illegal mix of collations for operation 'UNION'

目前可用的方法是 select * from customer join fed_number on customer.number_id=fed_number.id

实际使用要用到3个以上的视图或表来处理不同源头表的数据同步
他不能用union
但是可以用 not in  
2个not in 和一个inner join基本可以把所有不同的情况都知道。

用 left join 或者right join  http://topic.csdn.net/u/20110804 ... c-99dce10618a2.html


是网络原因 。

经过测试 本地2个federeated 表  (他们分别对应远程2台机器的表)
总共是3台机器

最后发现是可以做union的
前面测试错误原因在于  网络单向不通

[ 本帖最后由 liyihongcug 于 2011-9-14 16:25 编辑 ]

使用道具 举报

回复
论坛徽章:
18
授权会员
日期:2005-10-30 17:05:33美羊羊
日期:2015-03-04 14:48:58马上有车
日期:2014-02-18 16:41:112014年新春福章
日期:2014-02-18 16:41:11紫蜘蛛
日期:2012-02-21 15:06:16嫦娥
日期:2012-02-21 15:05:212012新春纪念徽章
日期:2012-01-04 11:49:54ITPUB十周年纪念徽章
日期:2011-11-01 16:20:282009日食纪念
日期:2009-07-22 09:30:00数据库板块每日发贴之星
日期:2009-02-26 01:01:03
12#
 楼主| 发表于 2011-9-21 20:30 | 只看该作者
是网络原因 。

经过测试 本地2个federeated 表  (他们分别对应远程2台机器的表)
总共是3台机器

最后发现是可以做union的
前面测试错误原因在于  网络单向不通

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表