作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个在 MYSQL 中运行但不会在 SQLite 中运行的查询。我认为它失败是因为 WHERE 子句中的多个参数。
目的是为所有调查问题 (sqid) 选择唯一的最新调查答案 (said),因为一个问题可能有多个答案。
SELECT sqid, said, saname, satimestamp
FROM surveyanswer
WHERE (sqid, hoid, satimestamp) IN (
SELECT sqid, hoid, max(satimestamp) as satimestamp
FROM surveyanswer
GROUP BY sqid
)
我尝试过按 satimestamp 排序,并选择了一个限制而不是最大值,但无法让它工作。
最佳答案
您可以通过连接来做到这一点:
SELECT sqid, said, saname, satimestamp
FROM surveyanswer A
JOIN (
SELECT sqid, hoid, max(satimestamp) as satimestamp
FROM surveyanswer
GROUP BY sqid
) B ON A.sqid = B.sqid and A.hoid = B.hoid and A.satimestamp = B.satimestamp
这在功能上与您的原始 SQL 类似,但由于您只关心时间,我相信这也能正常工作:
SELECT sqid, said, saname, satimestamp
FROM surveyanswer A
JOIN (
SELECT max(satimestamp) as satimestamp
FROM surveyanswer
) B ON A.satimestamp = B.satimestamp
关于mysql - SQLite 在 WHERE 中传递多个参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20224991/
我是一名优秀的程序员,十分优秀!