选择列表;这与我的 sql 中的 DISTINCT 不兼容

2024-05-24

CREATE DEFINER=`root`@`localhost` PROCEDURE `GetAllEventIdList_SP`(in skillId varchar(50),in offsetvalue int,in recordlimit int,out totalcountquery text)
BEGIN

 set @whereClause="   ";

 SET @skills=concat('"',skillId,'"');

 if(skillId is not null and skillId <>"" and skillId <>0) then
 set @whereClause=concat(@whereClause," where skill_id in (",@skills ,")");

 end if;
     set totalcountquery=concat("select count(distinct (eventId)) from EventAttachmentList_View ",@whereClause);

  if(offsetvalue<recordlimit) then  
     set @SqlQuery=concat("select distinct (eventId),scheduleId from EventAttachmentList_View ",@whereClause,  " order by scheduleDate desc ", " limit " ,recordlimit , " offset 0");
     PREPARE querystatement FROM @SqlQuery;
     EXECUTE querystatement;
     DEALLOCATE PREPARE querystatement;

  else 

     set @SqlQuery=concat("select distinct (eventId),scheduleId from EventAttachmentList_View ",@whereClause,  " order by scheduleDate desc  ",  " limit " ,recordlimit , " offset ", offsetvalue);

     PREPARE querystatement FROM @SqlQuery;
     EXECUTE querystatement;
     DEALLOCATE PREPARE querystatement;

 end if;


END

这是我调用数据时的动态查询 tju.GetAllEventIdList_SP('1',17, 16, @totalcountquery); 然后我收到错误 ORDER BY 子句的表达式 #1 不在 SELECT 列表中,引用的列“EventAttachmentList_View.scheduleDate”不在 SELECT 列表中;这与 DISTINCT 不兼容

请建议我如何解决此问题,查询中需要进行哪些更改


您的 MySQL 版本是ONLY_FULL_GROUP_BY模式启用这意味着(在 MySQL 5.7.5 及更高版本中)任何查询使用DISTINCT and ORDER BY将需要以下列ORDER BY也能在SELECT查询的一部分。

修复方法是添加scheduleDate to the SELECT您的部分查询如下所示:

CREATE DEFINER=`root`@`localhost` PROCEDURE `GetAllEventIdList_SP`(in skillId varchar(50),in offsetvalue int,in recordlimit int,out totalcountquery text)
BEGIN

 set @whereClause="   ";

 SET @skills=concat('"',skillId,'"');

 if(skillId is not null and skillId <>"" and skillId <>0) then
 set @whereClause=concat(@whereClause," where skill_id in (",@skills ,")");

 end if;
     set totalcountquery=concat("select count(distinct (eventId)) from EventAttachmentList_View ",@whereClause);

  if(offsetvalue<recordlimit) then
     set @SqlQuery=concat("select distinct (eventId),scheduleId,scheduleDate from EventAttachmentList_View ",@whereClause,  " order by scheduleDate desc ", " limit " ,recordlimit , " offset 0");
     PREPARE querystatement FROM @SqlQuery;
     EXECUTE querystatement;
     DEALLOCATE PREPARE querystatement;

  else

     set @SqlQuery=concat("select distinct (eventId),scheduleId,scheduleDate from EventAttachmentList_View ",@whereClause,  " order by scheduleDate desc  ",  " limit " ,recordlimit , " offset ", offsetvalue);

     PREPARE querystatement FROM @SqlQuery;
     EXECUTE querystatement;
     DEALLOCATE PREPARE querystatement;

 end if;


END
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

选择列表;这与我的 sql 中的 DISTINCT 不兼容 的相关文章

  • MySQL有两个不同的密码?

    我确信它们是不同事物的密码 但我不确定是什么 当在终端连接到 MySQL 时 我输入 usr LOCAL mysql BIN mysql h host u username p然后系统会提示我输入密码 密码是 但是当使用 PHP 连接到 M
  • MySQL Workbench 6.0 错误无法获取管理员的管理访问权限?

    我在这里使用 MySQL Workbench 6 0 当我选择服务器状态时 出现此错误 对此 我尝试在Google和StackOverflow上寻找解决方案 e g 这个结果 https stackoverflow com question
  • MySQL 与 PHP 的连接无法正常工作

    这是我的情况 我正在尝试使用 Apache 服务器上的 PHP 文件连接到 MySQL 数据库 现在 当我从终端运行 PHP 时 我的 PHP 可以连接到 MySQL 数据库 使用 php f file php 但是当我从网页执行它时 它只
  • Preg_replace() 删除除查询结尾之外的所有内容

    首先 为我糟糕的英语感到抱歉 我有这样的疑问 SELECT t1 SELECT COUNT FROM table a t2 WHERE t1 id t2 id c AND t2 status 1 AS aula FROM table c t
  • 将 UPDATE 转换为 INSERT INTO ON DUPLICATE KEY UPDATE 语句

    我有这个 UPDATE MySQL 语句 效果很好 UPDATE table1 Inner Join table2 ON table2 id table1 gw id SET table1 field1 1 table1 field2 2
  • mySQL MATCH 跨多个表

    我有一组 4 个表 我想对其进行搜索 每个都有全文索引 查询可以使用每个索引吗 CREATE TABLE categories id int 5 unsigned NOT NULL auto increment display order
  • 单行的总和值?

    我有一个 MySQL 查询 它返回由一系列 1 和 0 组成的单行 它用于进度条指示器 我现在在代码中对它进行求和 但我尝试对查询中的值求和 并意识到我无法使用 SUM 因为它们有很多列 但只有一行 有没有办法可以在查询中自动求和 就像这样
  • ActiveRecord3死锁重试

    Rails 3 或 ActiveRecord 3 是否有任何插件可以复制旧版本死锁重试 http agilewebdevelopment com plugins deadlock retry插入 或者 该插件仍然适用于 Rails 3 吗
  • 对于数据库来说,选择正确的数据类型会影响性能吗?

    如果是这样 为什么 我的意思是 tinyint 的搜索速度比 int 快吗 如果是这样 性能上的实际差异是什么 是的 根据数据类型 它确实有所不同 int vs tinyint不会在速度上产生明显的差异 但会在数据大小上产生差异 假设tin
  • 显示表 FULLTEXT 索引列

    我希望运行一个查询 该查询将返回表中全文索引的列列表 该表采用 MyISAM 格式 我将使用 php 来构建查询 理想情况下 我会运行查询 它会返回信息 以便我可以构造一个以逗号分隔的列字符串 例如 名 姓 电子邮箱 这在 MySQL 中可
  • 无法启动 MySQL 服务器 - 控制进程退出并出现错误代码

    我的 mysql 服务器停止后无法启动 命令使用 sudo etc init d mysql restart Error 重新启动 mysql 通过 systemctl mysql serviceJob for mysql service
  • 查询中列的顺序重要吗?

    当从 MySQL 表中选择列时 与表中的顺序相比 选择列的顺序是否会影响性能 不考虑可能覆盖列的索引 例如 您有一个包含行 uid name bday 的表 并且有以下查询 SELECT uid name bday FROM table M
  • MYSQL - 查找最近的前一天

    我可以以某种方式 不使用 PHP 找到一周中最近的前一天日期吗 Like 最近的上一个星期二的日期是哪一天 CURDATE INTERVAL WEEKDAY CURDATE wday IF WEEKDAY CURDATE gt wday 0
  • java mysql 准备好的语句

    我正在尝试使用 java 向数据库中进行简单的插入 它告诉我我的 sql 语法已关闭 但是 当我复制打印出来的字符串并将其放入 phpmyadmin 中的 sql 命令中时 它会正确执行该命令 并且我似乎无法弄清楚 java 中的字符串查询
  • 当sql连接中存在两个同名列时,如何从一个表列中获取值

    当我连接两个具有相同名称列的表时 我目前面临着尝试获取值的问题 例如 table1 date和table2 date 每个表中的日期不同 我将如何获取 日期 本例中的表1 我目前正在跑步 while row mysqliquery gt f
  • 截断 Mysql 表 Cron 作业?

    我在如何使用 cron 作业截断 Mysql 表时遇到了一些麻烦 无论我尝试什么 我似乎都无法让数据库清除表格 感谢您的帮助 mysql uderp example pexample hlocalhost Dexample e TRUNCA
  • 为什么这会返回资源 id #2? [复制]

    这个问题在这里已经有答案了 可能的重复 我如何从 PHP 中的 MySql 响应中 回显 资源 id 6 https stackoverflow com questions 4290108 how do i echo a resource
  • 无法通过套接字“/var/lib/mysql/mysql.sock”连接到本地 MySQL 服务器 (2)

    当我尝试连接 mysql 时出现以下错误 Can t connect to local MySQL server through socket var lib mysql mysql sock 2 这个错误有解决办法吗 其背后的原因可能是什
  • Apache、PHP 和 MySQL 可移植吗?

    我可以在外部硬盘上运行 Apache PHP 和 MySQL 吗 我需要这个 因为我在不同的地方工作 计算机 有时我没有安装和配置所有使用的应用程序 当然可以 XAMPP http www apachefriends org en xamp
  • Laravel leftJoin 仅右表的最后一条记录

    我是 Laravel 的新手 我有两张桌子 1 产品 2 价格 products id product int p key name varchar prices id price int p key id product int

随机推荐