小编Mad*_*iya的帖子

按枚举分组计数,包括可能计数为0的枚举值

我有一张桌子。字段之一是类别(由枚举表示)。有些类别的商品为零。

所以我这样做:

select category, count(*) as total from items group by category;
+------------+-------+
| category   | total |
+------------+-------+
| one        |  6675 |
+------------+-------+
Run Code Online (Sandbox Code Playgroud)

我想生成一个这样的表(其中两个是另一个可能的枚举值):

+------------+-------+
| category   | total |
+------------+-------+
| one        |  6675 |
+------------+-------+
| two        |  0    |
+------------+-------+
Run Code Online (Sandbox Code Playgroud)

如何使用mysql SQL查询执行此操作?

mysql mariadb

2
推荐指数
1
解决办法
306
查看次数

在Self上使用IN子查询优化Update查询

我有一个80000行数据库,结果编号在130000000和168000000之间,结果使用字段pid配对。我需要将行的状态从“ G”更改为“ X”,结果对之间的差值为4300000。

我想出了下面的查询,该查询可以运行,但是速度很慢,可以提高速度吗?

UPDATE table1 SET status = 'X'
WHERE id IN (
SELECT id FROM (
    SELECT a.id AS id FROM table1 a, table1 b
    WHERE a.result = b.result + 4300000
    AND a.pid = b.pid
    AND a.result between 130000000 and 168000000
    AND a.status = 'G'
    ) AS c
);
Run Code Online (Sandbox Code Playgroud)

索引是:

table1  0   PRIMARY 1   id  A   80233   NULL    NULL        BTREE
table1  1   id  1       id  A   80233   NULL    NULL        BTREE
table1  1   id  2   result  A   80233   NULL …
Run Code Online (Sandbox Code Playgroud)

mysql sql

2
推荐指数
1
解决办法
61
查看次数

尝试 mysqldump 时出现“未知变量 'key_buffer_size=256M'”

我有一个专用的 32 GB RAM Centos 7 服务器。我对 /etc/my.cnf 的设置了解非常有限。我在备份过程中遇到“未知变量 'key_buffer_size=256M'”,结果系统创建了零大小的文件。

mysqldump:未知变量 'key_buffer_size=256M' 数据库备份:bor --> bor.sql 构建文件列表 ... 完成 bor.sql

发送 105 字节 接收 46 字节 302.00 字节/秒 总大小为 0 加速为 0.00

我不明白 key_buffer_size 有什么问题!

这是我的“my.cnf”的内容:

!includedir /etc/my.cnf.d

key_buffer_size = 256M
query_cache_size = 128M
tmp_table_size = 128M
innodb_buffer_pool_size = 6500M
innodb_additional_mem_pool_size = 32M
innodb_log_buffer_size = 8M
max_connections = 250
sort_buffer_size = 8M
read_buffer_size = 2M
read_rnd_buffer_size = 16M
join_buffer_size = 8M
binlog_cache_size = 1M
Run Code Online (Sandbox Code Playgroud)

mariadb

1
推荐指数
1
解决办法
4971
查看次数

如何从每2分钟存储的状态日志中确定事件的开始/结束时间

MariaDB版本:版本:10.0.38-MariaDB-0 + deb8u1

我有一张表,其中每2分钟报告一次设备状态(开/关),其时间戳记为unix时间。

select * from devices_stats 
where device_id = 'LivingLight' 
  AND timestamp BETWEEN 1570080242 AND 1570084922;

+-------+-------------+--------+------------+-------------+
| id    | device_id   | status | timestamp  | device_iddr |
+-------+-------------+--------+------------+-------------+
| 16416 | LivingLight | OFF    | 1570080242 |           1 |
| 16427 | LivingLight | OFF    | 1570080363 |           1 |
| 16438 | LivingLight | OFF    | 1570080483 |           1 |
| 16449 | LivingLight | OFF    | 1570080602 |           1 |
| 16460 | LivingLight …
Run Code Online (Sandbox Code Playgroud)

mysql sql mariadb

1
推荐指数
1
解决办法
43
查看次数

带有内部连接和限制的mysql子查询

我有两个recipes_sa带列的表:

recipes_id   recipes_name   recipes_chef
----------   ------------   ------------
Run Code Online (Sandbox Code Playgroud)

chefs_sa带有列:

chefs_id   chefs_name
--------   ----------
Run Code Online (Sandbox Code Playgroud)

我想获得有限数量的食谱,其中包含他们的厨师详细信息,使用INNER JOINLIMIT

我做了以下功能:

function getLimitJoinData($data, $tbls, $ids, $abr, $type, $limit) {

            $dataToSelect = implode($data, ',');

            $q = "SELECT $dataToSelect";

            $q.= " FROM (SELECT * FROM $tbls[0] LIMIT $limit) $abr";


            for ($i=1; $i < count($tbls); $i++) { 
                $q .= " ".$type." JOIN ". $tbls[$i] ." ON " . $abr.'.recipes_chef' .' = '. $ids[$i-1][0];   
            }
        }
Run Code Online (Sandbox Code Playgroud)

查询是这样的

SELECT chefs_sa.chefs_name,
       recipes_sa.recipes_name 
FROM (SELECT * …
Run Code Online (Sandbox Code Playgroud)

mysql inner-join subquery

0
推荐指数
1
解决办法
362
查看次数

MySQL 查找两列之间缺失的组合

我在 MySQL 中运行,我有一个表输出作为目的地(a,b,c),如下所示

columnstart  columnend
a             b
a             c
b             a
b             b
b             c
c             a
Run Code Online (Sandbox Code Playgroud)

现在我正在尝试获取未在下面的输出中列出的目的地

columnstart   columnend
a             a
c             b
c             c
Run Code Online (Sandbox Code Playgroud)

有什么方法可以实现这一目标吗?提前致谢。

mysql

0
推荐指数
1
解决办法
261
查看次数

MySQL查询在1小时内选择

我希望SELECT 1小时平均1分钟数据.

EX)

id |          time          | value
 1 |  2018-05-16 13:45:59   |   3
 1 |  2018-05-16 14:25:39   |   4
 1 |  2018-05-16 14:55:39   |   6
 1 |  2018-05-16 15:35:19   |   1
Run Code Online (Sandbox Code Playgroud)

我想看

id |          time          | value
 1 |  2018-05-16 13:00:00   |   3
 1 |  2018-05-16 14:00:00   |   5
 1 |  2018-05-16 15:00:00   |   1
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

mysql mariadb

0
推荐指数
1
解决办法
148
查看次数

标签 统计

mysql ×6

mariadb ×4

sql ×2

inner-join ×1

subquery ×1