我有一个课程表和一个科目表。
CLASS
|class_id|class_name|subject_id|date_time|
------------------------------------------
(imagine some rows here)
SUBJECT
|subject_id|subject_name|current_class_count|
---------------------------------------------
(imagine some rows here)
出于索引目的,我想每小时更新主题列表,其中包含具有以下内容的课程列表:date_time
比现在更大。
我可以做这样的选择语句:
SELECT count(*) AS num, subject_id
FROM class
GROUP BY subject_id
where date_time > NOW()
我会得到类似的东西
RESULT
|num|subject_id|
----------------
| 8 | 1 |
| 6 | 2 |
| 9 | 3 |
----------------
更新主题表的最有效方法是什么current_class_count
?我可以通过循环并执行多个更新语句来使用 PHP 来做到这一点,但我认为 mySql 应该有一种更简单的方法。
Edit: 这个怎么样:
UPDATE SUBJECT
LEFT JOIN (
SELECT count(*) AS num, subject_id
FROM class
GROUP BY subject_id
where date_time > NOW()) AS t ON SUBJECT.subject_id = t.subject_id
SET SUBJECT.current_class_count = coalesce( t.num, 0 )
只要我输入正确,基本上您应该能够每小时运行一次,它会更新您的 SUBJECT 表。
与 Microsoft SQL 相比,MySQL 中在 UPDATE 语句中连接表有点不同。这是一个关于它的链接:
http://blog.ookamikun.com/2008/03/mysql-update-with-join.html http://blog.ookamikun.com/2008/03/mysql-update-with-join.html
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)