SQL查询为(动态)列值

时间:2011-08-16 08:45:24

标签: mysql data-structures

考虑以下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

因为我的真实查询将使用多个,因此变得非常混乱:(

2 个答案:

答案 0 :(得分:1)

您是否看过创建视图? http://dev.mysql.com/doc/refman/5.0/en/create-view.html

它不会阻止查询的混乱,但它确实允许您将它集中在一个地方。

答案 1 :(得分:1)

每当table1发生更改时,我都会使用TRIGGER来更新相关table2行中的Count列。