【问题标题】:Error getting last 3 rows from mysql query从 mysql 查询中获取最后 3 行时出错
【发布时间】:2015-07-23 11:52:38
【问题描述】:

我正在尝试从查询中获取最后 3 行,但我不断收到此错误:

SQLSTATE[42S21]: 列已存在: 1060 Duplicate column name 'id'

拜托,我在这里做错了什么?

$sql = "SELECT * FROM (SELECT i.*, m.*, p.* FROM message i JOIN 
members m ON m.id = i.sender_id JOIN profile_photos p 
ON p.member_id = m.id   WHERE (receiver_id = :receive 
AND sender_id = :sent OR receiver_id = :sent AND sender_id = :receive) 
ORDER BY date DESC LIMIT 3) t ORDER BY date ASC";

【问题讨论】:

  • 我的猜测是ip 有一个名为id 的列
  • 请显示您的数据库架构
  • select i.*, m.*, p.* 中有重复项。仅列出您真正需要的列。
  • 对@GordonLinoff 评论投了赞成票。在选择要输出的字段时,恕我直言,通配符从来都不是一个好主意,并且可能会导致大量资源使用或此类查询的不良行为

标签: php mysql pdo


【解决方案1】:

您可能已经在多个表中拥有ID 列,并且选择语句SELECT i.*, m.*, p.* 将它们全部列出。

选择您想要的特定列

SELECT i.id, i.col1, m.col2, p.col3 ...

或者,使用类似的列别名

SELECT i.id as IID, m.*, p.id as PID

【讨论】:

  • 谢谢!我选择我需要的特定字段
猜你喜欢
  • 1970-01-01
  • 2015-12-01
  • 1970-01-01
  • 2017-03-12
  • 2012-11-04
  • 2011-09-26
  • 2021-01-01
  • 2015-08-04
  • 1970-01-01
相关资源
最近更新 更多