|
mysql 版本:
Server version: 5.1.45-community MySQL Community Server (GPL)
相关表结构:
mysql> desc alarm_site;
+-----------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------------+------------------+------+-----+---------+----------------+
| ALARM_id | int(10) | NO | PRI | NULL | auto_increment |
| ALARM_def_ID | int(10) unsigned | NO | | NULL | |
| ALARM_date | date | NO | | NULL | |
| ALARM_severity | char(20) | YES | | NULL | |
| ALARM_starttime | char(20) | YES | | NULL | |
| ALARM_cleartime | char(20) | YES | | NULL | |
| ALARM_status | char(32) | YES | | NULL | |
| ALARM_comments | varchar(512) | YES | | NULL | |
| ALARM_component | char(50) | YES | | NULL | |
| ALARM_count | int(10) | NO | | NULL | |
| Site_id | int(10) | NO | | NULL | |
+-----------------+------------------+------+-----+---------+----------------+
mysql> desc alarm_def;
+---------------------+------------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra
|
+---------------------+------------------+------+-----+---------+----------------+
| ALARM_def_ID | int(10) unsigned | NO | PRI | NULL | auto_increment |
| ALARM_def_Function | varchar(512) | NO | | NULL | |
| ALARM_def_IMR | char(128) | YES | | NULL | |
| ALARM_def_Fixed | char(128) | YES | | NULL | |
| ALARM_def_Comments1 | text | YES | | NULL | |
| ALARM_def_Comments2 | text | YES | | NULL | |
| User_ID | int(10) | YES | | NULL | |
+---------------------+------------------+------+-----+---------+----------------+
7 rows in set (0.00 sec)
mysql> desc site_def;
+-----------+----------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+----------+------+-----+---------+-------+
| Site_id | int(10) | NO | PRI | NULL | |
| Site_name | char(48) | NO | | NULL | |
| Site_load | char(96) | YES | | NULL | |
+-----------+----------+------+-----+---------+-------+
3 rows in set (0.06 sec)
下面的查询没有问题,可以运行(注意加粗部分)
select `alarm_site`.`ALARM_def_ID` AS `ALARM_def_ID`,`alarm_site`.`Site_id` AS `Site_id`,`alarm_site`.`ALARM_date` AS `ALARM_date`,group_concat(`alarm_site`.`ALARM_component` separator ',') AS `Component`,group_concat(distinct `alarm_site`.`ALARM_severity` separator ',') AS `Severity`,group_concat(`alarm_site`.`ALARM_starttime`,_utf8'~',`alarm_site`.`ALARM_cleartime` separator ',') AS `Fire_Clear_time`,`alarm_def`.`ALARM_def_Function` AS `ALARM_def_Function`,`site_def`.`Site_name` AS `Site_name`
from ((`alarm_site` join `alarm_def` on((`alarm_site`.`ALARM_def_ID` = `alarm_def`.`ALARM_def_ID`))) join `site_def` on((`alarm_site`.`Site_id` = `site_def`.`Site_id`)))
where (`alarm_site`.`ALARM_date` = (select max(`alarm_site`.`ALARM_date`) AS `max(alarm_date)` from `alarm_site`))
group by `alarm_site`.`ALARM_def_ID`,`alarm_site`.`Site_id`,`alarm_site`.`ALARM_date`
将黑体部分修改成以下格式出错:
select `alarm_site`.`ALARM_def_ID` AS `ALARM_def_ID`,`alarm_site`.`Site_id` AS `Site_id`,`alarm_site`.`ALARM_date` AS `ALARM_date`,group_concat(`alarm_site`.`ALARM_component` separator ',') AS `Component`,group_concat(distinct `alarm_site`.`ALARM_severity` separator ',') AS `Severity`,group_concat(`alarm_site`.`ALARM_starttime`,_utf8'~',`alarm_site`.`ALARM_cleartime` separator ',') AS `Fire_Clear_time`,`alarm_def`.`ALARM_def_Function` AS `ALARM_def_Function`,`site_def`.`Site_name` AS `Site_name`
from ((`alarm_site` join `alarm_def` on((`alarm_site`.`ALARM_def_ID` = `alarm_def`.`ALARM_def_ID`))) join `site_def` on((`alarm_site`.`Site_id` = `site_def`.`Site_id`)))
where (`alarm_site`.`ALARM_date` in (select DISTINCT `ALARM_date` from `alarm_site` order by alarm_date desc limit 30 )
group by `alarm_site`.`ALARM_def_ID`,`alarm_site`.`Site_id`,`alarm_site`.`ALARM_date`
[Err] 1235 - This version of MySQL doesn't yet support 'LIMIT & IN/ALL/ANY/SOME subquery'
查了一下关于Err 1235的解决方案,修改为以下语句:
select `alarm_site`.`ALARM_def_ID` AS `ALARM_def_ID`,`alarm_site`.`Site_id` AS `Site_id`,`alarm_site`.`ALARM_date` AS `ALARM_date`,group_concat(`alarm_site`.`ALARM_component` separator ',') AS `Component`,group_concat(distinct `alarm_site`.`ALARM_severity` separator ',') AS `Severity`,group_concat(`alarm_site`.`ALARM_starttime`,_utf8'~',`alarm_site`.`ALARM_cleartime` separator ',') AS `Fire_Clear_time`,`alarm_def`.`ALARM_def_Function` AS `ALARM_def_Function`,`site_def`.`Site_name` AS `Site_name`
from ((`alarm_site` join `alarm_def` on((`alarm_site`.`ALARM_def_ID` = `alarm_def`.`ALARM_def_ID`))) join `site_def` on((`alarm_site`.`Site_id` = `site_def`.`Site_id`)))
where (`alarm_site`.`ALARM_date` in (select * from (select DISTINCT `ALARM_date` from `alarm_site` order by alarm_date desc limit 30 ) as t2)
group by `alarm_site`.`ALARM_def_ID`,`alarm_site`.`Site_id`,`alarm_site`.`ALARM_date`;
出错如下:
[Err] 1064 - You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group by `alarm_site`.`ALARM_def_ID`,`alarm_site`.`Site_id`,`alarm_site`.`ALARM_' at line 1
求高手帮忙。。。拜谢。。。 |
|