美高梅4858-美高梅4858mgm-[官方网站]

MySQL GROUP BY 不会对 NULL 进行分组统计解决办法(表述可能不正确,具体看内容...)

数据表结构

goods (商品信息)表结构

+------------+--------------+------+-----+-------------------+----------------+
| Field      | Type         | Null | Key | Default           | Extra          |
+------------+--------------+------+-----+-------------------+----------------+
| gdID       | int(11)      | NO   | PRI | NULL              | auto_increment |
| tID        | int(11)      | YES  | MUL | NULL              |                |
| gdCode     | varchar(50)  | YES  |     | NULL              |                |
| gdName     | varchar(100) | NO   |     | NULL              |                |
| gdPrice    | float        | YES  |     | 0                 |                |
| gdQuantity | int(11)      | YES  |     | 0                 |                |
| gdSaleQty  | int(11)      | YES  |     | 0                 |                |
| gdCity     | varchar(50)  | YES  |     | 长沙              |                |
| gdInfo     | longtext     | NO   |     | NULL              |                |
| gdAddTime  | timestamp    | YES  |     | CURRENT_TIMESTAMP |                |
| gdHot      | tinyint(11)  | YES  |     | 0                 |                |
| gdImage    | varchar(255) | YES  |     | NULL              |                |
+------------+--------------+------+-----+-------------------+----------------+

orderdetail (商品订单信息、评论)表结构

+------------+---------------+------+-----+---------+----------------+
| Field      | Type          | Null | Key | Default | Extra          |
+------------+---------------+------+-----+---------+----------------+
| odID       | int(11)       | NO   | PRI | NULL    | auto_increment |
| oID        | int(11)       | YES  |     | NULL    |                |
| gdID       | int(11)       | YES  |     | NULL    |                |
| odNum      | int(11)       | YES  |     | NULL    |                |
| dEvalution | varchar(8000) | YES  |     | NULL    |                |
| odTime     | datetime      | YES  |     | NULL    |                |
+------------+---------------+------+-----+---------+----------------+

需求

需要列出商品信息及评价数量

当时想到的解题思路是,通过查询 OrderDetail 表,通过外连接(RIGHT JOIN) goods 表,然后进行分组查询,然后就有了以下语句

SELECT
    Goods.gdID,
    Goods.gdName,
    Goods.gdPrice,
    Goods.gdSaleQty,
    Goods.gdImage,
    COUNT( OrderDetail.gdID ) AS noe 
FROM
    `OrderDetail`
    RIGHT JOIN `Goods` ON `Goods`.`gdID` = `OrderDetail`.`gdID` 
GROUP BY
    `OrderDetail`.`gdID` 
ORDER BY
    noe DESC;

运行结果:

发现,当商品没有评价的,不会列出来
+------+-------------+---------+-----------+--------------------------------------------------------------------------------------------------------------------+-----+
| gdID | gdName      | gdPrice | gdSaleQty | gdImage                                                                                                            | noe |
+------+-------------+---------+-----------+--------------------------------------------------------------------------------------------------------------------+-----+
|   10 | HUAWEIP9_PLUS |    3980 |         7 | 【HUAWEI官方买就送Type C 转接头】Huawei/HUAWEI P9 plus全网通手机                                                       |   5 |
|    3 | 牛肉干      |      94 |        61 | 牛肉干一般是用黄牛肉和其他调料一起腌制而成的肉干。牛肉干中的风干牛肉源于蒙古铁骑的战粮,携带方便,并且有丰富的营养 |   2 |
|    5 | 运动鞋      |     400 |       200 | 运动,健康等                                                                                                       |   1 |
|    6 | 咖啡壶      |      50 |        45 | 一种冲煮咖啡的器具。咖啡壶是欧洲最早的发明之一,约在1685年于法国问世,在路易十五时期在各地广为流传。               |   1 |
|    8 | A字裙       |     128 |       200 | 2016秋季新品韩版高腰显瘦圆环拉链a字半身裙双口袋包臀短裙子女                                                        |   1 |
|    1 | 迷彩帽      |      63 |        29 | 透气夏天棒球帽男女鸭舌帽网帽迷彩帽子太阳帽防晒韩版休闲遮阳帽                                                       |   0 |
+------+-------------+---------+-----------+--------------------------------------------------------------------------------------------------------------------+-----+

解决

再网上找到了一个类似的问题:https://blog.csdn.net/u011277123/article/details/79883855
这篇文章参考的是:https://stackoverflow.com/questions/4588935/group-by-do-not-group-null

他是这么写的

增加一个 UUID(),把 b.name 的 NULL 的值都转化为具有专一性的 uuid,这样每个 b.name 都会不同, GROUP 就不会对他们进行分组
我也没怎么理解他说的,但是按照他的方法做,可以实现我想要的结果

SQL 语句:

SELECT
    Goods.gdID,
    Goods.gdName,
    Goods.gdPrice,
    Goods.gdSaleQty,
    Goods.gdImage,
    COUNT( OrderDetail.gdID ) AS noe 
FROM
    `OrderDetail`
    RIGHT JOIN `Goods` ON `Goods`.`gdID` = `OrderDetail`.`gdID` 
GROUP BY
    IFNULL(
        `OrderDetail`.`gdID`,
    UUID());
ORDER BY
    noe DESC;

运行结果:

评价数为 0 的结果也输出了,这正是我想要的结果
+------+-------------+---------+-----------+--------------------------------------------------------------------------------------------------------------------+-----+
| gdID | gdName      | gdPrice | gdSaleQty | gdImage                                                                                                            | noe |
+------+-------------+---------+-----------+--------------------------------------------------------------------------------------------------------------------+-----+
|   10 | HUAWEIP9_PLUS |    3980 |         7 | 【HUAWEI官方买就送Type C 转接头】Huawei/HUAWEI P9 plus全网通手机                                                       |   5 |
|    3 | 牛肉干      |      94 |        61 | 牛肉干一般是用黄牛肉和其他调料一起腌制而成的肉干。牛肉干中的风干牛肉源于蒙古铁骑的战粮,携带方便,并且有丰富的营养 |   2 |
|    5 | 运动鞋      |     400 |       200 | 运动,健康等                                                                                                       |   1 |
|    6 | 咖啡壶      |      50 |        45 | 一种冲煮咖啡的器具。咖啡壶是欧洲最早的发明之一,约在1685年于法国问世,在路易十五时期在各地广为流传。               |   1 |
|    8 | A字裙       |     128 |       200 | 2016秋季新品韩版高腰显瘦圆环拉链a字半身裙双口袋包臀短裙子女                                                        |   1 |
|    1 | 迷彩帽      |      63 |        29 | 透气夏天棒球帽男女鸭舌帽网帽迷彩帽子太阳帽防晒韩版休闲遮阳帽                                                       |   0 |
+------+-------------+---------+-----------+--------------------------------------------------------------------------------------------------------------------+-----+

MySQL 计算每科成绩和并以降序排列

问题

查询各个学生总成绩,并按总分从高到底排序

也就是要将 ChineseMath...Biology 字段都加起来然后排列

有以下表

+----+--------+-----+------------------+---------+---------+------+---------+-----------+---------+
| ID | Name   | Age | Job              | Chinese | English | Math | Physics | Chemistry | Biology |
+----+--------+-----+------------------+---------+---------+------+---------+-----------+---------+
|  1 | 王建军 |  30 | Java讲师         |     100 |      98 |   99 |      96 |        97 |     100 |
|  2 | 常庆林 |  28 | Linux讲师        |     100 |     100 |   98 |      93 |        99 |      96 |
|  3 | 徐培成 |  35 | BigData讲师      |     100 |     100 |  100 |      98 |        96 |     100 |
|  4 | 李永强 |  30 | javaEE开发工程师 |     100 |      93 |   91 |      74 |        89 |     100 |
|  5 | 赵子昂 |  24 | python开发工程师 |      98 |      93 |   91 |      74 |        89 |     100 |
|  6 | 桂阳   |  25 | C++开发工程师    |     100 |      98 |   93 |      91 |        99 |      82 |
|  7 | 肖云龙 |  24 | Golang开发工程师 |      93 |      97 |   85 |     100 |        93 |      69 |
|  8 | 李洋   |  23 | C#开发工程师     |     100 |      98 |   99 |      96 |        97 |     100 |
|  9 | 卜孟龙 |  30 | BigData开发      |      98 |      93 |  100 |     100 |        73 |      92 |
| 10 | 罗大鹏 |  22 | Java开发工程师   |     100 |      84 |   91 |      87 |       100 |      93 |
| 11 | 尹正杰 |  18 | 高级运维工程师   |     100 |     100 |  100 |     100 |       100 |     100 |
+----+--------+-----+------------------+---------+---------+------+---------+-----------+---------+

解决思路

我当时就想着用

SELECT SUM(`Chinese`+`Math`+`English`+`Physics`+`Chemistry`+`Biology`) AS 'total' FROM `classmate` ORDER BY `total` DESC;

结果运行结果是:

这显然不是大家要的结果
mysql> SELECT SUM(`Chinese`+`Math`+`English`+`Physics`+`Chemistry`+`Biology`) AS 'total' FROM `classmate` ORDER BY `total` DESC;
+-------+
| total |
+-------+
| 6263  |
+-------+
1 row in set (0.02 sec)

然后我就 谷歌 搜啊搜,搜了很久很久(真的好久...)。终于找到了一个合适的结果,原文链接:https://segmentfault.com/q/1010000002894877

得知应该是这样的:

SELECT *,( Chinese + Math + English + Physics + Chemistry + Biology ) AS total 
FROM
    classmate 
ORDER BY
    `total` DESC

运行结果完美,是我想要的结果

mysql> SELECT *,( Chinese + Math + English + Physics + Chemistry + Biology ) AS total 
FROM
    classmate 
ORDER BY
    `total` DESC;
+----+--------+-----+------------------+---------+---------+------+---------+-----------+---------+-------+
| ID | Name   | Age | Job              | Chinese | English | Math | Physics | Chemistry | Biology | total |
+----+--------+-----+------------------+---------+---------+------+---------+-----------+---------+-------+
| 11 | 尹正杰 |  18 | 高级运维工程师   |     100 |     100 |  100 |     100 |       100 |     100 |   600 |
|  3 | 徐培成 |  35 | BigData讲师      |     100 |     100 |  100 |      98 |        96 |     100 |   594 |
|  8 | 李洋   |  23 | C#开发工程师     |     100 |      98 |   99 |      96 |        97 |     100 |   590 |
|  1 | 王建军 |  30 | Java讲师         |     100 |      98 |   99 |      96 |        97 |     100 |   590 |
|  2 | 常庆林 |  28 | Linux讲师        |     100 |     100 |   98 |      93 |        99 |      96 |   586 |
|  6 | 桂阳   |  25 | C++开发工程师    |     100 |      98 |   93 |      91 |        99 |      82 |   563 |
|  9 | 卜孟龙 |  30 | BigData开发      |      98 |      93 |  100 |     100 |        73 |      92 |   556 |
| 10 | 罗大鹏 |  22 | Java开发工程师   |     100 |      84 |   91 |      87 |       100 |      93 |   555 |
|  4 | 李永强 |  30 | javaEE开发工程师 |     100 |      93 |   91 |      74 |        89 |     100 |   547 |
|  5 | 赵子昂 |  24 | python开发工程师 |      98 |      93 |   91 |      74 |        89 |     100 |   545 |
|  7 | 肖云龙 |  24 | Golang开发工程师 |      93 |      97 |   85 |     100 |        93 |      69 |   537 |
+----+--------+-----+------------------+---------+---------+------+---------+-----------+---------+-------+
11 rows in set (0.05 sec)

PHP 版超星学习通自动签到,支撑多用户签到、HTTP API 调用,二次开发便捷!

项目地址

https://github.com/PrintNow/ChaoxingSign

? ChaoxingSign | 超星学习通签到

PHP 版超星学习用自动签到,支撑多用户签到,二次开发便捷!

PHP 7.3 测试通过,理应 PHP 5.4 及以上都能够使用

  • 登录方式:

支撑手机号码登录,不支撑!!!学号登录

  • 签到功能:

支撑普通签到,手势签到,二维码签到,位置签到,拍照签到 (这些未测试

? 使用方法

  1. 下载源码:

    直接下载:https://github.com/PrintNow/ChaoxingSign/archive/master.zip

    克隆源码:git clone https://github.com/PrintNow/ChaoxingSign

  2. ? 运行

    1. 上传到网站根目录运行

      然后访问 http://你的域名/main.php?account=你的超星账号&password=你的超星密码

    2. 或者使用命令行运行

      php main.php -A "你的超星账号" -P "你的超星密码"
  3. ? 实现自动签到

    推荐大于等于 10 分钟 实行一次,避免出现异常

    我已经硬编仅能在每天的 08:00 ~ 22:00 之间运行,
    如果要取消或修改这一限制,请删除或注释
    main.php 第 7~9 行

    1. 如果以网页方式运行,定时监控 http://你的域名/main.php?account=你的超星账号&password=你的超星密码 即可
    2. 如果使用命令行方式运行,添加 crontab 任务即可,具体添加 crontab 任务 方法可以网上搜。
每天 早上8点到晚上22点之间,每10分钟签到一次 crontab 表达式:`0 */10 8-22 * * * *`

√ 运行输出

签到成功:

正在签到:卡路里与健康:教你如......应该签到成功

正在签到:数据库管理与应用...应该签到成功

没有签到任务:

没有待签到的任务

? 注意

超星屏蔽了如 阿里云、Tencent云、百度云... 等 IDC IP 地址,故有可能出现未知的错误(我没测试,我仅在家庭宽带中测试成功)

?? 感谢

本项目的实现参考了以下文章
  • https://www.z2blog.com/index.php/learn/423.html
  • https://www.z2blog.com/index.php/default/459.html
本项目中使用到的 Selector.php 来自 PHPSpider

License

遵循 MIT License 协议
[span=color:#fff;font-size:10px;background:#33CC99;display:inline-block;padding:2px 5px;border-radius:3px;margin-left:5px;float:right]红米 Note4X 标配版(黑色)[/span]

历史上的今天 免费API 开发文档

关于本 API

数据库已开源,详细请访问:/php/922.html

? API 字段说明

? 请求

使用 GET 方法请求 https://api.nowtime.cc/v1/today_in_history

例子,获取1月1日,降序排序:https://api.nowtime.cc/v1/today_in_history?month=1&day=1&order=asc

字段说明
month月份。默认值是本月,你可以输入 1~12 之间的数字
day日期。默认值是今天,你可以输入 1~31 之间的数字
order排序方式。根据 年份排序,默认值是 desc 降序(从大到小),你可以输入 descasc

? 返回

字段类型说明
codeint[必有] 状态码,正常返回 200,其它包括数据不存在都返回如 500、-1
msgstring[必有] 信息,正常返回 ok,非 200 状态码返回错误原因
countint历史上的今天返回数量
disclaimerstring[必有] 免责声明,可以自己在 api.php 第82行 进行修改
dataarray历史上的今天 数据,字段说明请看下方
yearint[必有] 年份,如果前面带有有负号 -,则代表是公元前
monthint[必有] 月份
typeint[必有] 事件类型,1:大事件,2:出生,3:逝世
datastring[必有] 事件信息,如果当天有多个事件,将以 ${{delimiter}} 作为分隔符进行分割。PHP 可以使用 explode() 函数进行分割,美高梅4858mgm 可以使用 split 方法进行分割
请注意,以下是我进行了修改的,实际返回条数不止 2条
{
    "code": 200,
    "msg": "ok",
    "count": 2,
    "disclaimer": "数据源于“维基百科”,经过加工后为您呈现本数据,数据采集于 2020\/04\/12 12:00,在此之后一些数据可能发生了改变,请以事实为准!美高梅4858不承担任何因数据改变而造成的任何责任",
    "data": [{
        "year": 2020,
        "month": 1,
        "day": 1,
        "type": 3,
        "data": "大卫·斯特恩,前任美国国家篮球协会总裁(1942年出生)"
    }, {
        "year": 2019,
        "month": 1,
        "day": 1,
        "type": 1,
        "data": "中华民国实施大型餐饮业如连锁速食店等,内用将禁止提供塑胶吸管的规定[3][4];中华民国依法届期终止第三代行动通讯(3G)业务。"
    }]
}
XML 地图 | Sitemap 地图