一次诡异的 SQL 数量统计查询不准的问题

一个统计数量(有连表)的 SQL,加上条件若干假设结果为 N1,然后再加条件详细统计细分数量,诡异的来了,假设加的条件分别是 T1.F1 = T2.F2 和 T1.F1 != T2.F2,这两个细分 SQL 的结果 N2 和 N3 加起来竟然不等于 N1,那么漏掉的这部分数据是啥,想不通。
(1)问了同事yz,他提了一个可能,F1 和 F2 在 where 语句中使用了之后(非 is null 语句),结果就肯定不会包含 F1 为 null 或 F2 为 null 的值
(2)对此我只能说——所有的诡异都是无知的反应。

2020/08/13 posted in  日常问题

帖子列表时如何查询包含我的帖子

场景

用户发帖之后,需要审核通过之后才能被别人看到,同时审核中的帖子自己也能够看到,通过一个列表接口如何实现?

分析

这个列表接口数据应包含:所有审核通过的帖子 + 自己的审核中的帖子

现有一个帖子表 post 定义如下:

Read more   2020/07/02 posted in  日常问题

日常问题之收集:Linux 篇(持续更新)

查看磁盘占用

$ df -hl

scp 传输文件夹

$ scp -r ./* <username>@<host>:<path>
Read more   2020/01/01 posted in  日常问题

日常问题之收集:PHP篇(持续更新)

array_column 指定kv

<?php

$arr = [
    [
        'a' => 1,
        'b' => 2,
    ],
    [
        'a' => 3,
        'b' => 4,
    ]
];

$arr2 = array_column($arr, 'b', 'a');
print_r($arr2);
/*
Array
(
    [1] => 2
    [3] => 4
)
*/
Read more   2020/01/01 posted in  日常问题

日常问题之收集:正则表达式篇(以php代码为示例)(持续更新)

/**
 * 合并空格(多个空格只保留一个)
 */
function mergeSpaces($str)
{
    return preg_replace("/\s(?=\s)/", "\\1", $str);
}
``
2020/01/01 posted in  日常问题

日常问题之收集:CI框架篇(持续更新)

日常问题之收集:CI框架篇(持续更新)

DISTINCT 写法

$this->db->select('DISTINCT(id)');

UNION 写法

不支持 UNION,自己拼 SQL 吧

Read more   2020/01/01 posted in  日常问题

一文彻底解决Ubuntu上PHP的安装以及版本切换

Read more   2018/02/27 posted in  日常问题 日常折腾

日常问题之收集:Git篇(持续更新)

error: You have not concluded your merge (MERGE_HEAD exists)

error: You have not concluded your merge (MERGE_HEAD exists).  
hint: Please, commit your changes before merging.  
fatal: Exiting because of unfinished merge.

这个错误可能是因为在你一千pull下来的代码没有自动合并导致的。解决方法如下,首先强制取消合并:

$ git merge --abort
$ git pull
# do some merge
$ git commit -m "merge"

然后手动进行冲突合并操作,最后提交此次修改。

Read more   2020/01/01 posted in  日常问题

日常问题之收集:SQL篇(持续更新)

按照日期汇总(2020-06-30)

select count(1), left(time, 10) from <table>
where time > '2020-06-01'
group by left(time, 10);

group by order by 同时使用(2020-07-06)

执行过程:先 group by 之后,每组取出第一个,然后再 order by

(1)如果想要在每组内进行排序然后取每组的第一个,可以先通过子查询排好序,再对子查询的结果进行 group by order by 就能得到正确的结果。

(2)如果表A和表B连表并且A和B是一对多的关系,这是如果需求是按照A表排序取一个,那么 group by A.id order by A.id 就可以直接写,因为此时不是组内排序,而是组外排序,组内多个记录 A 相关的字段值都是一样,此时取任何一个都可以,取完再排序。取完A的值之后,再用 A.id 取B表相关的记录即可。

Read more   2020/01/01 posted in  日常问题

Message: Illegal string offset

示例

<?php
ini_set('display_errors', 'On');
error_reporting(E_ALL);

$a = '';

echo $a['k'];

// Warning: Illegal string offset 'k'

$a = [];

echo $a['k'];

// Notice: Undefined index: k

Read more   2020/05/27 posted in  日常问题

Uncaught TypeError: Cannot convert object to primitive value

最近发现我的博客页面移动端上下拉菜单失效了,调试了一下,只要一点击下拉菜单就会报这个错误:

下拉菜单使用 bootstrap,部分代码如下:

Read more   2020/04/26 posted in  日常问题

ERROR 1698 (28000): Access denied for user 'root'@'localhost'

Read more   2018/10/21 posted in  日常问题

Laravel 5.7 No 'Access-Control-Allow-Origin' header is present on the request resource

前后端项目跨域访问时会遇到此问题,解决方法如下:

创建一个中间件

php artisan make:middleware EnableCrossRequestMiddleware

该中间件的文件路径为:app/Http/Middleware/EnableCrossRequestMiddleware.php

中间件 EnableCrossRequestMiddleware 内容如下:

Read more   2018/10/10 posted in  日常问题