- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有两个 mysql 表:
mysql> desc macToNames;
+-------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------+------+-----+---------+-------+
| mac | varchar(17) | YES | UNI | NULL | |
| Name | text | YES | | NULL | |
| Seen | decimal(10,0) | NO | | NULL | |
+-------+---------------+------+-----+---------+-------+
和
mysql> desc stats;
+--------+---------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+--------+---------------+------+-----+---------+-------+
| mac | varchar(17) | YES | | NULL | |
| ipAddr | text | YES | | NULL | |
| epoch | decimal(10,0) | NO | | NULL | |
| sent | decimal(10,0) | NO | | NULL | |
| recv | decimal(10,0) | NO | | NULL | |
+--------+---------------+------+-----+---------+-------+
我有一个如下查询,我的加入
技能有限:
select case when macToNames.Name is null then stats.mac else macToNames.Name end as 'Hostname'
,stats.mac as 'mac',stats.ipAddr as 'ipAddr'
,stats.epoch as 'epoch'
,stats.sent as 'sent'
,stats.recv as 'recv'
from stats
left
join macToNames
on macToNames.mac = stats.mac
limit 5;
+-------------------+-------------------+---------------+------------+----------+-----------+
| Hostname | mac | ipAddr | epoch | sent | recv |
+-------------------+-------------------+---------------+------------+----------+-----------+
| x1 | 39-F2-BC-2F-4D-E9 | 192.168.1.232 | 1593836118 | 307197 | 623309 |
| someho-lxc | 29-F2-BC-2F-4D-E9 | 192.168.1.52 | 1593836118 | 4273599 | 4207535 |
| 39-F2-BC-2F-4D-E9 | 39-F2-BC-2F-4D-E9 | 192.168.1.216 | 1593836118 | 4899 | 6503 |
| tinker | 39-F2-AC-2F-4D-E9 | 192.168.1.166 | 1593836119 | 60312 | 8563601 |
| u1 | 3A-F2-BC-2F-4D-E9 | 192.168.1.172 | 1593836119 | 380 | 380 |
+-------------------+-------------------+---------------+------------+----------+-----------+
这就是我遇到困难的地方 - 我希望将上述查询作为子查询运行
mysql> select Hostname,mac from (select case when macToNames.Name is null then stats.mac else macToNames.Name end as 'Hostname',stats.mac as 'mac',stats.ipAddr as 'ipAddr',stats.epoch as 'epoch',stats.sent as 'sent',stats.recv as 'recv' from stats left join macToNames on macToNames.mac=stats.mac);
ERROR 1248 (42000): Every derived table must have its own alias
还有,另一个:
mysql> select Hostname,mac,sum(stats.Sent)/(1000000000) as 'Sent',sum(stats.Recv)/1000000000 as 'Recv' group by mac from (select case when macToNames.Name is null then stats.mac else macToNames.Name end as 'Hostname',stats.mac as 'mac',stats.ipAddr as 'ipAddr',stats.epoch as 'epoch',stats.sent as 'sent',stats.recv as 'recv' from stats left join macToNames on macToNames.mac=stats.mac);
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group by mac from (select case when macToNames.Name is null then stats.mac else ' at line 1
我试图生成一份关于每台 mac 的总流量的报告,并显示该设备的友好名称。我在案件和加入之间完全迷失了方向 - 你能给我指明正确的方向吗?
最佳答案
如错误所示,您必须在 FROM
或 JOIN
子句中为派生表或子查询提供别名。此外,对于聚合查询,所有 SELECT
列都必须出现在 GROUP BY
中(位于 FROM
和 JOIN
子句之后) .请注意,顶层下方的所有列均由别名 sub
限定。此外,您的 stats
字段的列别名是多余的,因为没有使用表达式并且它们重复原始列名。最后,对于许多零,使用 E
以提高可读性。
select sub.Hostname
, sub.mac
, sum(sub.Sent)/1E9 as 'Sent'
, sum(sub.Recv)/1E9 as 'Recv'
from
(select case
when macToNames.Name is null
then stats.mac
else macToNames.Name
end as 'Hostname'
, stats.mac
, stats.ipAddr
, stats.epoch
, stats.sent
, stats.recv
from stats
left join macToNames
on macToNames.mac=stats.mac
) as sub
group by sub.Hostname
, sub.mac
在 MySQL 8.0+ 中,您可以使用 CTEs代替派生表:
with sub AS (
select case
when macToNames.Name is null
then stats.mac
else macToNames.Name
end as 'Hostname'
, stats.mac
, stats.ipAddr
, stats.epoch
, stats.sent
, stats.recv
from stats
left join macToNames
on macToNames.mac=stats.mac)
select sub.Hostname
, sub.mac
, sum(sub.Sent)/1E9 as 'Sent'
, sum(sub.Recv)/1E9 as 'Recv'
from sub
group by sub.Hostname
, sub.mac
关于mysql - sql查询语法大小写、join和group by,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62972996/
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求提供代码的问题必须表现出对所解决问题的最低限度理解。包括尝试过的解决方案、为什么它们不起作用,以及预
出于某种原因,右栏中的精选文章忽略了“#elementtext”和“#elementtext:hover”属性。仅显示“p.element”和“img.element”。 有什么想法吗? 谢谢 - 塔
我有两个值,每个值都来自不同的枚举。我想检查这两者的允许组合,如果没有找到则执行默认操作。我能以某种方式对这两个值进行切换/大小写吗?我想避免使用多个 if/else 语句或遵循位掩码模式的枚举,只是
我需要 where 但 not 大小写。例如,我想找到没有名字“莎士比亚”的戏剧: _.where(listOfPlays, {author: !"Shakespeare", year: 1611})
我想实现一个 parking 场应用所以有一个带5个或更多 parking 位的车库当司机 parking 时,车库中的下一个空闲位置应该分配给他。 所以我有一个带 5 个或更多插槽的 table 上
我想使用 Erlang 来确定传递给函数的变量是否可以被数字整除。我考虑过使用 case 来执行此操作,但是我找不到解决方案。 case 是适合这项工作的工具吗? 示例:将数字传递给函数 f()。如果
我在 phpmyadmin 中创建了一个表,其列名如 first_name、last_name。当我使用命令显示表中的列名时,它会将它们显示为 first_name。 我想显示我的列名称,如 Firs
使用 Swift 4,如何使用这些规则格式化字符串: 如果单词超过 3 个字母,则首字母大写,否则大写 包含像 St-Michel 这样的连字符的 Pascal 大小写单词 我这里有初稿,但我一直在思
这个问题在这里已经有了答案: Why can't the switch statement be applied to strings? (23 个回答) 关闭 8 年前。 大家好 所以我正在尝试对
在 MVC 操作中,我如何访问使用多个同名值提交的“表单数据”中的值? 我做了什么:int、decimal、string 类型的值工作完美。 问题:每个变体都有一个复选框,所以当我尝试获取它时,它只显
while(1) { char buff[1000]; printf("Enter the word: "); fgets(buff, 1000
我有一个 Dllmain,它在线程附加到此 DLL 时分配线程本地存储。代码如下: BOOL APIENTRY DllMain(HMODULE hModule,
我有一个变量名,比如“WARD_VS_VITAL_SIGNS”,我想将它转换为 Pascal 大小写格式:“WardVsVitalSigns” WARD_VS_VITAL_SIGNS -> WardV
我是 Swift 编码的新手,正在尝试弄清楚如何在触摸节点时制作具有开/关功能的循环音频。我认为实现它的最佳方式是通过 SKAudioNode,但我不确定我在以下代码中做错了什么。当在节点上按下时 -
这是我第一次使用这种枚举,具有关联值类型的枚举,我需要根据对象的类型制作一个 switch 语句,我无法做到,这是枚举: enum TypeEnum { case foo(FooClass)
我想从字符串中删除所有下划线,下划线后面的字符为大写。因此,例如:_my_string_ 变为:MyString 同样:my_string 变为 MyString 有没有更简单的方法呢?我目前有以下内
如何在 Java 中将蛇形大小写转换为 Camel 形大小写? 输入:“input_in_snake_case” 输出:“InputInSnakeCase” 最佳答案 Guava通过其CaseForm
我们有一个表auth_group_access,那么如何使用呢? 在使用M方法时,对于带下划线的表名,可以采用如下方法。 M('AuthGroupAccess'); 对应sql语句SQL: S
我正在制作一个 pygame 游戏,每当我运行我的代码时,我都会收到错误 expected ':'。我知道在 match/case block 中使用 [ 和 ] 用于其他用途,但我该如何解决这个问题
有人能告诉我是否可以使用正则表达式将 url 转换为小写? 这是在 html img 标签内,所以我们可以通过标签找到网址。 这是我所拥有的一个例子 我需要在最后小写图像名称。 该文档包含更多 H
我是一名优秀的程序员,十分优秀!