【mysql联查中使用if和group by会让你的结果不是你想要的】教程文章相关的互联网学习教程文章

mysql – 每半个月日期范围的Group-By【代码】

我需要一个查询帮助,按月分组所有按月分组的值. 试:SELECT sum(price) From table WHERE ADD_DATE( date, INTERVAL 15 DAY);预期结果:Jan Day 1 - 15 = 5.2 Jan Day 16 - 31 = 80.4Feb Day 1 - 15 = 50 Feb Day 16 - 28 = 80.2 .....解决方法:这基本上是从1月15日和16日末分解的提取物.MySQL有一个很好的简单函数“Last_Day()”,它返回给定月份的最后一天selectCONCAT( DATE_FORMAT(`date`, '%b %Y Day ' ),case when dayofmont...

mysql – 在Group_concat内部排序【代码】

This是我的小提琴. 表和数据是create table Table3 (MatchID varchar(10), ItemType varchar(10)); insert into Table3 values ('M001','Fruit'), ('M001','Animal'), ('M002','Fruit'), ('M002','Vehicle');当您有一个按MatchID和ItemType排序的选择查询时,它将返回select MatchID,ItemType from Table3 order by MatchID,ItemType;MATCHID ITEMTYPEM001 AnimalM001 FruitM002 FruitM002 Vehicle像这样,这是预期和正确...

mysql – 基于Group By中的最大列选择行【代码】

我正在尝试为视频游戏创建一个高分板. 有一个用户表: 还有一个分数表: 我试过使用这个查询:SELECT MAX(`scores`.`score`) AS max_score,`scores`.`team`,`users`.`name` FROM `scores`LEFT JOIN `users`ON `users`.`id` = `scores`.`user_id` GROUP BY `scores`.`user_id` ORDER BY max_score DESC LIMIT 50返回此结果(示例): 正如你所看到的,用户FUNTIMES的210得分归因于老虎队应该根据得分表归入维京队(FUNTIMES的user_id是1...

mysql – 有条件地GROUP BY不同的列【代码】

我想显示聊天消息列表. 为此,我有一个SELECT语句:SELECT id, `from`, sent, message, recd FROM chat WHERE id IN(SELECT MAX(id) FROM chatWHERE `to` = ? GROUP BY `from` ) ORDER BY id DESC问题是,我想有条件地选择= maria和from = maria的消息. 也就是说,如果要=玛丽亚我想分组来自,如果来自=玛丽亚,我想分组到. 如何动态更改此GROUP BY?解决方法:我认为所有提议的查询都很好 – 这意味着他们将返回预期的结果(每个不同的用...

如何在mysql上“加入”之前使用“group by”?【代码】

我有以下查询,其中包含重复的user_id.我不希望看到一个以上的用户.我决定使用group by,如下所示:SELECT u.`ID`, u.`user_login`, u.`user_registered`, u.`display_name` FROM purchase_key p LEFT JOIN users u ON p.user_id = u.id WHERE ( `product_id` = 1 OR `product_id` = 2 ) AND `create_date` <= '2015-09-20' AND `create_date` >= '2014-09-01' group by p.user_id order by p.`create_date` asc但有没...

mysql – 将group_concat的结果集限制为实际结果【代码】

我有以下查询主要工作,但当其中一个连接表返回的结果数不同时,在group_concat()中返回太多结果:select a.sku, a.ek, a.mwst, concat('[[', group_concat('{"offer": ', b.offer, ', "minQuantity": ', b.minQuantity, '}') , ']]') offersA,concat('[[', group_concat('{"offer": ', c.offer, ', "minQuantity": ', c.minQuantity, '}') , ']]') offersB,concat('[[', group_concat('{"offer": ', d.offer, ', "minQuantity": ', ...

MySQL Group By功能在不同的版本中【代码】

以下是一个简单的SQL查询:SELECT * FROM *table_name* GROUP BY *column_name*在我的系统中,我有MySQL 5.5.它工作得非常好.而在我朋友的系统中,他有MySQL 5.7,并且他收到以下错误:ERROR 1055 (42000): Expression #1 of SELECT list is not in GROUP BYclause and contains nonaggregated column ‘testdb.assetentry.entryId’which is not functionally dependent on columns in GROUP BY clause;this is incompatible with sq...

mysql – SELECT重复/重复值,计数N不带COUNT或GROUP BY【代码】

假设我有一个人员ID(1-8)和人物角色(1-4)表:CREATE TABLE personRole ( PersonId int NOT NULL, RoleId int NOT NULL );INSERT INTO personRole VALUES (1, 1), (1, 2), (2, 1), (2, 3), (3, 3), (4, 3), (1, 4), (5, 2), (6, 1), (7, 1), (7, 4), (8, 1), (8, 2), (8, 4) ;我的目标是选择拥有3个或更多角色的人员ID,角色特别是1,2和4.这是我的第一个解决方案:SELECT PersonId FROM personRole WHERE RoleID in (1,2,4) GROUP BY...

mysql – 尽管sql_mode为空,但存储过程引发“与sql_mode = only_full_group_by不兼容”

我有一个在MySQL 5.6上运行良好的存储过程.在最近的服务器迁移期间,我们升级到MySQL 5.7.19. 我的存储过程现在抛出错误: SELECT列表的表达式#1不在GROUP BY子句中,并且包含非聚合列’utility-monitor.daily_readings.building_id’,它在功能上不依赖于GROUP BY子句中的列;这与sql_mode = only_full_group_by不兼容:CALL monthly_readings(2017,1,NULL,1,1)) 我已经通过/var/mysql/my.cnf文件将sql_mode设置为“”,重新启动了mysq...

mysql – 包含和不包含GROUP BY的COUNT(*),没有匹配的行【代码】

考虑具有以下记录的关系表(Balance,Customer):现在我尝试了these two queries here:-- Query 1: select A.Customer, count(B.Customer) from account A, account B where A.balance < B.balance group by A.Customer;-- Query 2: select A.Customer, count(B.Customer) from account A, account B where A.balance < B.balance;第一个查询没有输出.使用第二个查询,我得到一个count = 0的输出. 在这两种情况下,没有满足where子句中...

MySQL Group By Query X或不是X.【代码】

这应该很容易,但我没有找到答案.我有一个运行计数的查询,我想在查询中将其分组到State = 1和State<> 1并且每个组的总和.SELECT count(`id_job`) as count, `state` FROM job_table GROUP BY `state`;解决方法:您也可以通过它查询布尔表达式和组:SELECT state = 1, COUNT(*) FROM job_table GROUP BY state = 1

如何在Zend_Db_Select中使用MySQL GROUP BY修饰符WITH ROLLUP?【代码】

我的Web应用程序(PHP / MySQL Zend)中的SQL查询使用许多参数来构建搜索查询.但是,提取的记录应按两列分组以获得子总计. WITH ROLLUP似乎是查找小计的好方法,但Zend_Db_Select不支持此修饰符.有什么工作吗?解决方法:好,$select->from(array('t1' => 'table1'))->where("where");->group("(field1) WITH ROLLUP");

mysql – SQL“group by”使用优先级【代码】

我有一个表,我可以有一个给定ID的多个名称,如下所示: a_table(id int,name varchar(100),priority int); 我需要一个将在名称上搜索但仍确保每个id只返回1个名称的语句,并且该名称将是具有更高优先级的名称. 例如如果我的数据是1, AaaB, 2 1, AbbB, 1 1, AccB, 0 2, foo, 0 3, AddC, 0我希望我的查询“A%”返回:1, AaaB 3, AddC我想的是:select * from a_table where name like A% group by id;但这并不能保证选择具有更高优先级...

MySQL Group By Day by Day【代码】

我有一张桌子id int pk auto_inc | created int(11) | amount int | user_id int我想创建一个按天分组的行列表,总计金额字段. 我试过这个:SELECT created, sum(amount) as amount, id FROM total_log WHERE user_id = $this->user_id GROUP BY DAY(created)这没有给出正确的结果.他们被分成一行. 日期从dd / mm / yyyy格式保存到unix时间戳,如1349046000解决方法: SELECT DATE(FROM_UNIXTIME(created)) as d, sum(amount) as amou...

mysql – 如何使用LEFT JOIN而不是GROUP BY查询多个用户使用的电子邮件?【代码】

假设我有一个名为user_table的表:user_tableidfirst_namelast_namegenderemailcreated_at如何编写查询列出多个用户使用的电子邮件? 编辑: 使用LEFT JOIN而不是GROUP BY可以获得相同的结果吗?解决方法: SELECT email FROM user_table GROUP BY email HAVING COUNT(*) > 1或者,您可以使用INNER JOIN:SELECT DISTINCT u1.email FROM user_table u1 INNER JOIN user_table u2ON u1.email = u2.email AND u1.id < u2.id