【问题标题】:error showing to connecting the database显示连接数据库的错误
【发布时间】:2014-05-08 08:39:41
【问题描述】:

CDbCommand 未能执行 SQL 语句:SQLSTATE[42S22]:找不到列:1054 'order 子句'中的未知列 'update_time'。

执行的SQL语句是:

SELECT `t`.`id` AS `t0_c0`, 
       `t`.`title` AS `t0_c1`, 
       `t`.`content` AS `t0_c2`, 
       `t`.`status` AS `t0_c3`, 
       `t`.`tags` AS `t0_c4`, 
       `t`.` update_time` AS `t0_c5`, 
       `t`.`create_time` AS `t0_c6`, 
       `t`.`author_id` AS `t0_c7` 
  FROM `post` `t` 
 WHERE (status=2) 
 ORDER BY update_time DESC 
 LIMIT 10 

【问题讨论】:

  • 有什么问题???错误很明显,您没有任何名为 update_time 的列
  • 这条消息的哪一部分你不清楚?
  • 表中的列名是' update_time'还是'update_time'?查询中的列名中有前导空格。
  • 我创建并发布表同时显示 update_time 和 create_Time
  • 在sqlfiddle.com发布表格和一些数据

标签: mysql


【解决方案1】:

尝试通过别名引用列:

SELECT `t`.`id` AS `t0_c0`, 
   `t`.`title` AS `t0_c1`, 
   `t`.`content` AS `t0_c2`, 
   `t`.`status` AS `t0_c3`, 
   `t`.`tags` AS `t0_c4`, 
   `t`.`update_time` AS `t0_c5`, 
   `t`.`create_time` AS `t0_c6`, 
   `t`.`author_id` AS `t0_c7` 
FROM `post` `t` 
WHERE (`t`.`status`=2) 
ORDER BY `t`.`update_time` DESC 
LIMIT 10

【讨论】:

    【解决方案2】:

    您需要像列名一样指定表名本身

     WHERE (t.status=2)   //replace this line in your code
     ORDER BY t.update_time DESC  //replace this line in your code
    

    【讨论】:

    • 它将显示#1054 - '字段列表'中的未知列't.update_time'
    • @user3436639 为什么不在sqlfiddle.com 中发布表格和一些数据,以便我们可以看到那里有什么问题。
    • 架构创建失败:表 'db_2_90d92.post' 不存在:
    • 然后将架构放到您的问题中
    • 架构创建失败:您的 SQL 语法有错误;检查与您的 MySQL 服务器版本相对应的手册,以在第 1 行的“CDbCommand failed to execute the SQL statement: SQLSTATE[42S22]: Column not foun”附近使用正确的语法:
    猜你喜欢
    • 2013-05-17
    • 2018-05-21
    • 2012-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-20
    相关资源
    最近更新 更多