【发布时间】:2010-03-08 17:30:53
【问题描述】:
我有一个照片表,用户可以在其中拥有多张照片。
我正在尝试创建以下查询:
$q = Doctrine_Query::create()
->update('Photo p')
->set('p.photo_type', 1)
->where('p.user_id = ?', $id)
->andWhere('p.date_added = (SELECT MIN(p.date_added) FROM Photo p WHERE p.user_id = ?)', $id)
我们的想法是将“photo_type”设置为 1,以便为该用户添加了最短日期的特定照片(最早的照片)。
我似乎无法正确使用语法。有人能指出我正确的方向吗?
谢谢。
编辑:
根据这个问题的答案 (MySQL Error 1093 - Can't specify target table for update in FROM clause),我似乎正在尝试做一些无法完成的事情。这个问题可以结束了。
【问题讨论】:
-
在使用像 MIN 这样的聚合函数时不需要 GROUP BY 吗?此外,您可以将您的选择表变成一个连接或简单地使用表变量或哈希表重写
-
首先尝试将 GROUP BY date_added 放在 WHERE 子句之前