我的SQL代码没什么问题。 我有下表:
CREATE TABLE post (
post INTEGER,
content TEXT,
time INTEGER,
owner TEXT,
thread TEXT,
pharse TEXT);
当然,该表具有默认值,选项等。所有者具有与用户的另一个表的外键。列thread
可以有多个相同的值。
我想构建一个这样的视图:
CREATE VIEW thread AS
SELECT
thread,
MIN(time) AS creation,
owner,
pharse,
MAX(time) AS last,
COUNT(post) as count
FROM post
GROUP BY thread
ORDER BY time DESC;
thread
对我的观点进行分组,creation
是第一篇文章的创建时间,owner
是第一篇文章的创建者,pharse
是第一篇文章的分析,{ {1}}是上次发布的创建时间,last
是具有相同线程值的所有帖子的计数。
除了count
之外,一切都会好的,当我想看到第一个帖子的所有者时,此列强制视图显示最后一个帖子的所有者。当我从代码中启动该行时,一切正常,但我需要它来对我的视图进行排序,这只是因为我想保留它 - 用于排序。
列的顺序对我来说毫无意义。如果它有任何重要性,我在PHP中使用这些查询。
如果有其他方式或某人可以告诉我如何修复我的代码,我会很高兴。
答案 0 :(得分:1)
要防止MAX()
影响查询的其余部分,您必须将其移动到子查询中:
SELECT thread,
MIN(time) AS creation,
owner,
pharse,
(SELECT MAX(time)
FROM post AS p2
WHERE p2.thread = post.thread
) AS last,
COUNT(post) as count
FROM post
GROUP BY thread