我有以下SQL,它运行得很好:
"SELECT t.id, t.date, t.time, t.balance FROM db1 t JOIN (SELECT tt.date, MAX(tt.time) as 'maxtime' FROM db1 tt GROUP BY tt.date) m ON m.maxtime = t.time AND t.date = m.date"
我现在想要的是插入WHERE条件,仅包含特定日期的数据。具体来说,我想使用WHERE date >= '$dateSelect'
。我不太确定我必须在查询中插入这个条件以使其工作 - 我已经尝试了几个位置(总是在FROM db1
部分后面)但是还没有使它工作。
任何人都可以帮助我吗?非常感谢帮助!
答案 0 :(得分:0)
由于您正在使用内部联接,因此可以将此where
子句应用于顶级查询或内部查询。就个人而言,我会将它应用于两者。在最坏的情况下,它会使代码混乱。在最好的情况下,您可以在加入优化程序可能错过的两个结果之前应用其他过滤:
SELECT t.id, t.date, t.time, t.balance
FROM db1 t
JOIN (SELECT tt.date, MAX(tt.time) as 'maxtime'
FROM db1 tt
WHERE tt.date >= '$dateSelect' -- Here
GROUP BY tt.date) m ON m.maxtime = t.time AND t.date = m.date
WHERE t.date >= '$dateSelect' -- And here
答案 1 :(得分:0)
SELECT
t.id, t.date, t.time, t.balance
FROM db1 t
JOIN (
SELECT tt.date, MAX(tt.time) as 'maxtime'
FROM db1 tt GROUP BY tt.date
) m ON (m.maxtime = t.time AND t.date = m.date)
WHERE t.date >= '$dateSelect'
答案 2 :(得分:0)
根据原则,在大学,我总是了解到这应该设置如下:
因此,SQL示例语句将是:
SELECT studentNo, class, AVG(marks) AS avgMarks, subjects FROM Students
WHERE age > 18
GROUP BY class
HAVING COUNT(subjects) > 5
ORDER BY avgMarks DESC
这将返回典型学校中年龄超过18岁的学生的详细信息,参加超过5个科目的课程,按照他们所在的班级对他们进行分组,并按照每个科目的平均分数对结果输出进行排序。学生。