【发布时间】:2017-09-30 09:01:30
【问题描述】:
所以我不久前询问了this question,现在我遇到了一个令人讨厌的变化。
假设我有这张桌子:
ID Date Special
1 2001-01-11 1
1 2003-03-03
1 2002-02-22 1
2 2001-01-11 1
2 2002-02-22 1
我需要按日期列举这些记录,还取决于记录是否标记为Special。
理想的输出应该是这样的:
ID Date Special Num
1 2001-01-11 1 1
1 2003-03-03
1 2002-02-22 1 2
2 2001-01-11 1 1
2 2002-02-22 1 1
这是桌子:
CREATE TEMPORARY TABLE temp_table(id INT, dt DATE, Special INT);
INSERT INTO temp_table VALUES
(1, '2001-01-11', 1),
(1, '2003-03-03', NULL),
(1, '2002-02-22', 1),
(2, '2001-01-11', 1),
(2, '2002-02-22', 1);
我希望能够修改我对上述问题的回答,但它使用了我不擅长的 SQL 的声明性方面。谢谢你看这个!
【问题讨论】:
-
嗯....你认为这值得吗?我会做一个你认为我应该... 想想看,这实际上是关于 SQL 的更烦人的事情之一。当我发现自己在问关于 R、Python 的问题时,创建 MCVE 非常简单快捷……但 MySQL 只是……blech。
-
有几点不清楚。如果不是按日期,行是如何排序的?为什么不使用标准日期格式 YYYY-MM-DD?当不是
'Y'时,特殊列是NULL 还是''?当组中的第一行有特殊而不是'Y'时,您想如何处理? -
提示:
mysqldump mydatabase mytable为您提供了 MCVE 所需的很多内容。它为所涉及的表输出SHOW CREATE TABLE,以及方便的INSERT语句中的数据。然后你可以把它修剪成你可以做成 SQLFiddle 的东西。 -
知道了!感谢您向我指出这一点。我会澄清这个问题。
标签: mysql enumeration