假设我有下orders
表,并且我正在检索所有failed
订单。
+----+------------------+-------+--------+
| id | email | total | status |
+----+------------------+-------+--------+
| 1 | john@example.com | 39.99 | failed |
|----|------------------|-------|--------+
| 2 | john@example.com | 39.99 | failed |
|----|------------------|-------|--------+
| 3 | pete@example.com | 19.99 | failed |
+----+------------------+-------+--------+
Run Code Online (Sandbox Code Playgroud)
我需要获取失败订单的总数以及它们的总和,但每个重复行仅获取一次(当相同email
且相total
同时,该行被视为重复)
目前我有一个非常简单的查询,它获取所有failed
订单的总数。我不知道如何去修改它返回所需的数据(我已经试过搞乱与周围DISTINCT
并GROUP BY
没有用。)
SELECT COUNT(*) AS `count`, SUM(`total`) AS `grand_total` FROM `orders` WHERE `status` = 'failed';
Run Code Online (Sandbox Code Playgroud)
返回:
+-------+-------------+
| count | grand_total |
+-------+-------------+ …
Run Code Online (Sandbox Code Playgroud) 我在我的项目中使用HttpFoundation组件,而不使用完整的Symfony2框架。如果某些凭据为真,我尝试进行RedirectResponse并重定向用户(如文档中所述),但该return
语句不起作用。
我有:
use Symfony\Component\HttpFoundation\RedirectResponse;
$logged = 1;
if ($logged == 1) {
$response = new RedirectResponse('http://google.com/');
return $response;
} else {
die("not logged");
}
Run Code Online (Sandbox Code Playgroud)
当我执行此操作时,没有任何反应。但是,如果我改为这样做,则可以成功重定向到Google:
if ($logged == 1) {
$response = new RedirectResponse('http://google.com/');
echo $response;
}
Run Code Online (Sandbox Code Playgroud)
为什么这与echo
但不起作用return
?我不想echo
在我的课程库中使用。
有什么办法吗?
我想按特定条件从表中转储数据,这是 sql 查询:
"SELECT * FROM document WHERE date BETWEEN 20160101 AND 20160131"
我从中选择的表是 MyISAM Merge。
我已删除与该查询匹配的行,并且我想从备份中导入它们,但仅限于这些行。
我尝试过像这样制作转储:
mysql -uroot -proot mydb -e "SELECT * INTO OUTFILE '/tmp/doc.sql' from document WHERE date BETWEEN 20160101 AND 20160131".
但会生成一个无法用phpmyadmin导入工具导入的文件。PMA 再次不想导出此查询结果。
有什么帮助吗?由于保密协议,我无法发布真实数据库/表的结构。
编辑:对于所有从 MyISAM MRG 表转储数据时遇到问题的人,您需要从子表转储,而不是主表。
我有简单的js脚本:
const printDate = (interval) => {
setTimeout(() => {
console.log(new Date());
printDate();
}, interval);
};
printDate(1000);
Run Code Online (Sandbox Code Playgroud)
而且我希望每1秒钟在控制台中看到1条记录,因为我已经通过1000作为间隔(这是1秒).
但是当我运行这个脚本时,我收到这样的东西:
km:gh kvol$ node test.js
2017-07-20T05:54:20.241Z
2017-07-20T05:54:20.244Z
2017-07-20T05:54:20.246Z
2017-07-20T05:54:20.247Z
2017-07-20T05:54:20.249Z
2017-07-20T05:54:20.250Z
2017-07-20T05:54:20.252Z
2017-07-20T05:54:20.253Z
2017-07-20T05:54:20.255Z
2017-07-20T05:54:20.256Z
2017-07-20T05:54:20.258Z
2017-07-20T05:54:20.259Z
2017-07-20T05:54:20.261Z
2017-07-20T05:54:20.262Z
2017-07-20T05:54:20.264Z
2017-07-20T05:54:20.265Z
2017-07-20T05:54:20.267Z
2017-07-20T05:54:20.268Z
2017-07-20T05:54:20.270Z
2017-07-20T05:54:20.271Z
2017-07-20T05:54:20.273Z
2017-07-20T05:54:20.274Z
2017-07-20T05:54:20.276Z
2017-07-20T05:54:20.277Z
2017-07-20T05:54:20.279Z
2017-07-20T05:54:20.280Z
2017-07-20T05:54:20.281Z
2017-07-20T05:54:20.283Z
2017-07-20T05:54:20.284Z
2017-07-20T05:54:20.286Z
2017-07-20T05:54:20.288Z
2017-07-20T05:54:20.290Z
2017-07-20T05:54:20.291Z
2017-07-20T05:54:20.293Z
2017-07-20T05:54:20.294Z
2017-07-20T05:54:20.296Z
Run Code Online (Sandbox Code Playgroud) 无法解释nodejs的行为。我有代码:
while (true) {
setTimeout(() => console.log(1), 0)
}
Run Code Online (Sandbox Code Playgroud)
这个脚本只是挂了...
怎么来的?我一直在考虑setTimeout
非阻塞和异步,并且nodejs使用timers
事件循环阶段来调度setTimeout
回调...但是似乎事件循环被阻塞了...