【问题标题】:Error in creating view创建视图时出错
【发布时间】:2014-07-30 12:00:14
【问题描述】:

我收到了错误#1349 - View's SELECT contains a subquery in the FROM clause

我的代码是:

CREATE VIEW `MyViewName` AS
SELECT *
FROM
  (SELECT *
   FROM (
           (SELECT *
            FROM `crm_clients`
            WHERE ctype=1
            ORDER BY rand() LIMIT 0,
                                  3)
         UNION
           (SELECT *
            FROM `crm_clients`
            WHERE ctype=1
            ORDER BY rand() LIMIT 0,
                                  3)
         UNION
           (SELECT *
            FROM `crm_clients`
            WHERE ctype=1
            ORDER BY rand() LIMIT 0,
                                  3)
         UNION
           (SELECT *
            FROM `crm_clients`
            WHERE ctype=1
            ORDER BY rand() LIMIT 0,
                                  3)) t
   ORDER BY rand())

这段代码有什么问题?我不熟悉视图

【问题讨论】:

标签: mysql


【解决方案1】:

当您定义视图时,MySQL 不允许在 from 子句中使用子查询。

你可以做你想做的事:

Create View `MyViewName` as
    (SELECT * FROM `crm_clients` WHERE ctype=1 order by rand() limit 0,3)
    union 
    (SELECT * FROM `crm_clients` WHERE ctype=1 order by rand() limit 0,3)
    union
    (SELECT * FROM `crm_clients` WHERE ctype=1 order by rand() limit 0,3)
    union
    (SELECT * FROM `crm_clients` WHERE ctype=1 order by rand() limit 0,3)
    order by rand();

我的猜测是您实际上也想更改 ctype 值。否则查询就比较奇怪了。

Here 是对视图的限制。

【讨论】:

  • 实际上 ctype 不同,这是我的错误
猜你喜欢
  • 2013-06-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-30
  • 1970-01-01
相关资源
最近更新 更多