[英]MySQL query the same table with two date fields and group by same ID
我很难按照需要的方式从数据库获取结果,这是我的表:
+----+---------------------+---------------------+-----------+------------+--------+
| id | opendate | closedate | openprice | closeprice | sameid |
+----+---------------------+---------------------+-----------+------------+--------+
| 1 | 2015-09-20 19:17:52 | NULL | 10 | NULL | 20 |
| 2 | NULL | 2015-09-20 20:17:00 | NULL | 35 | 20 |
| 3 | 2015-09-15 19:17:52 | NULL | 15 | NULL | 10 |
| 4 | NULL | 2015-09-16 20:17:00 | NULL | 25 | 10 |
+----+---------------------+---------------------+-----------+------------+--------+
我需要像这样按列sameid
分组的所有行:
+----+---------------------+---------------------+-----------+------------+--------+
| id | opendate | closedate | openprice | closeprice | sameid |
+----+---------------------+---------------------+-----------+------------+--------+
| 1 | 2015-09-20 19:17:52 | 2015-09-20 20:17:00 | 10 | 35 | 20 |
| 3 | 2015-09-15 19:17:52 | 2015-09-16 20:17:00 | 15 | 25 | 10 |
+----+---------------------+---------------------+-----------+------------+--------+
到目前为止,这是我尝试过的:
(SELECT * FROM table WHERE opendate >= '2015-08-08 00:00:01') UNION (SELECT * FROM table WHERE closedate <= '2015-10-15 23:59:59')
我可以获取所有行,但无法找到一种按sameid
分组的sameid
,我尝试使用GROUP BY sameid
失败。
希望你们能帮助我
谢谢
UPDATE该表是很早以前设计的(不是我设计的),并且存储的信息太多,我也不允许重新设计数据库架构。
如果您的表格格式完全符合您的描述,那么应该可以:
SELECT id,MAX(opendate),MAX(closedate),MAX(openprice),MAX(closeprice),sameid FROM table GROUP BY sameid;
但是,我认为您应该重新设计数据库架构,将打开信息和关闭信息分成两行(它们可以在2个表中或在同一表中)。 与尝试一些解决方法相比,与您合作会更好。
问候,
尝试这个
SELECT t1.opendate,t2.closedate,t1.openprice,t2.closeprice从`table` t1 JOIN`table` t2 ON t2.sameid = t1.sameid哪里t1.opendate> ='2015-08-08 00:00: 01'AND t2.closedate <='2015-10-15 23:59:59'AND t1.opendate不为空AND t2.closedate不为空
这将产生您的确切输出。
SELECT
MIN(id) as id,
MAX(open_date) as open_date,
MAX(close_date) as close_date,
MAX(open_price) as open_price,
MAX(close_price) as close_price,
sameid
FROM
`table`
GROUP BY
sameid
ORDER BY id ASC
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.