我已经安装了带有事件模块的 Drupal 安装。我编写了一个简短的插件,用于搜索结束日期已过的所有事件,然后使其不存在。它基本上是一个 SQL 查询,如下所示:
UPDATE node LEFT JOIN content_field_dates on node.nid = content_field_dates.nid SET node.status = 0 WHERE node.type = 'event' AND field_dates_value2 < NOW() AND node.status = 1
但是,某些事件可能有多个日期,即使某个日期已过且某些日期仍在未来,此查询也会将状态设置为 0。我设法做一个SELECT
查询,只查询MAX()
日期,如下所示:
SELECT * FROM node LEFT JOIN content_field_dates on node.nid = content_field_dates.nid WHERE node.type = 'event' AND field_dates_value2 < NOW() GROUP BY field_dates_value2 HAVING field_dates_value2 = MAX(field_dates_value2)
但我不知道这将如何转换UPDATE
为我无法使用的查询GROUP BY
。有任何想法吗?