• mysql 操作命令


    1、查询两个表 id相同的行:

    select * from mytable join mytable2 on mytable2.id = mytable.id;

    2、计算 mytable 表中 与 mytable2 表 id 相同的行的出现次数,并定义列名为 aaa,同时查出 mytable 的name、age列信息。

    select name,age,(select count(*) from mytable2 where mytable.id = mytable2.id) from mytable;

    3、

    SELECT * FROM your_table WHERE name IN ( SELECT name FROM your_table GROUP BY name HAVING COUNT(*) > 1 );

    查询指定重复行的用户

    select * from t_c1 where `学号`  in (select  学号 from  t_1 group by `学号`  having count(*)>1 );

    +----+--------+-----------+--------+--------+--------+--------------+--------------+

    | id | 学号   | 姓名      | 性别   | 籍贯   | 年龄   | 成绩级别     | 联系电话     |

    +----+--------+-----------+--------+--------+--------+--------------+--------------+

    |  1 |   1001 | 张小花    | 男     | 汉族   |     88 | A级          |    156783455 |

    |  7 |   1001 | 张小花    | 男     | 汉族   |     44 | B级          |    165834685 |

    +----+--------+-----------+--------+--------+--------+--------------+--------------+

    4、

    SELECT t_c1.`姓名`, COUNT(t_c1.`学号`) AS num

        -> FROM t_c1

        -> GROUP BY t_c1.`姓名`, t_c1.`学号`;

    +-----------+-----+

    | 姓名      | num |

    +-----------+-----+

    | 张小花    |   2 |

    | 李明      |   1 |

    | 吴迪      |   1 |

    | 李星      |   1 |

    | 小米      |   1 |

    | 奥咪咪    |   1 |

    +-----------+-----+

    6 rows in set (0.01 sec)

    select t_c1.`姓名`,count(t_c1.`学号`) as num from t_c1 group by t_c1.`学号` ;

    ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'test.t_c1.姓名' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by

    非聚合列是指在一个 SQL 查询中,没有被包含在聚合函数(例如 COUNT、SUM、AVG 等)中的列。在使用 GROUP BY 子句进行分组查询时,非聚合列必须要么出现在 GROUP BY 子句中,要么通过聚合函数进行处理。

    在您的查询中,t_c1.姓名 是一个非聚合列,因为它没有被包含在聚合函数中(COUNT)。根据 SQL 的标准规定,在启用了 ONLY_FULL_GROUP_BY 模式的情况下,非聚合列必须要么出现在 GROUP BY 子句中,要么被聚合函数处理。

    为了修正这个问题,您可以将t_c1.姓名列添加到 GROUP BY 子句中,或者对其使用适当的聚合函数(比如 MAX())来处理。

    要解决这个问题,您有两个选择:

    1. 将所有非聚合列都添加到GROUP BY子句中:

    SELECT t_c1.`姓名`, COUNT(t_c1.`学号`) AS num FROM t_c1 GROUP BY t_c1.`姓名`, t_c1.`学号`;

    1. 使用聚合函数对非聚合列进行处理:

    SELECT MAX(t_c1.`姓名`) AS 姓名, COUNT(t_c1.`学号`) AS num FROM t_c1 GROUP BY t_c1.`学号`;

    4、查出 table1 中与 table2  相同的学号 中,每个学号出现的次数。

    select max(t_c1.`姓名`) as `姓名`, count(t_c1.`学号`) as num from t_c1 join t_c2 on  t_c1.`学号`= t_c2.`学号`  group

    by t_c1.`学号`;

    select max(t_c1.`姓名`) as `姓名`, count(t_c1.`学号`) as num from t_c1 join t_c2 on  t_c1.`学号`= t_c2.`学号`  group

    by t_c1.`学号`;

    +-----------+-----+

    | 姓名      | num |

    +-----------+-----+

    | 张小花    |   2 |

    | 李明      |   1 |

    | 吴迪      |   1 |

    | 小米      |   1 |

    | 奥咪咪    |   1 |

    +-----------+-----+

  • 相关阅读:
    oracle 执行计划详解
    MyBatis特殊SQL的执行(模糊查询、批量删除、动态设置表名、添加功能获取自增的主键)
    新基建智慧铁路:高铁沿线综合视频监控及风险智能预警管理方案
    计算机网络-应用层(应用层概述,网络应用模型(C/S模型,P2P模型),DNS域名协议)
    计算机毕业设计Java大连环保公益网(源码+系统+mysql数据库+lw文档)
    Vue源码实现之watcher拾遗
    java毕业设计网站javaweb机房课表管理系统
    算法通过村第十三关-术数|青铜笔记|数字与数学
    蓝桥杯 Java 括号序列
    多任务环境中如何喂看门狗?
  • 原文地址:https://blog.csdn.net/gu2022_3_5_21_23/article/details/133858790