考虑以下MySQL场景:
Table1:
id, date, value
Table2:
id, month, count
表一存在多行超过1年(日期)和不同的值
有没有办法让表2的列'count'作为SQL查询?
实施例: 表2中的第1行
ID | Month | Count
------------------------------------------------------------------------------
1 | 07 | SELECT COUNT(*) FROM Table1 WHERE MONTH(DATE) = Table2.month
因此,如果我从表2中选择* select *,其中month = 07
然后我会从表1中得到相应月份的行数。
每行的某种动态列值,有没有办法?
注意:我的意思是,如果有任何内置方式,而不是使用像
这样的子查询SELECT *,
(SELECT COUNT(*) FROM Table1 WHERE MONTH(date) = Table2.month) as count
FROM Table2 where id = 2352
因为我的真实查询将使用多个,因此变得非常混乱:(
答案 0 :(得分:1)
您是否看过创建视图? http://dev.mysql.com/doc/refman/5.0/en/create-view.html
它不会阻止查询的混乱,但它确实允许您将它集中在一个地方。
答案 1 :(得分:1)
每当table1发生更改时,我都会使用TRIGGER来更新相关table2行中的Count列。