【问题标题】:Why i get wrong result set mysql?为什么我得到错误的结果集mysql?
【发布时间】:2023-03-03 08:07:19
【问题描述】:

编辑注意!我知道它看起来令人困惑,但 steveo 的回答
SELECT * from orders Group by orderId with masterId = 29
帮助我,我只是不明白它是如何工作的

我不明白发生了什么,我只是得到错误的结果 我的餐桌订单看起来很简单:

CREATE TABLE `orders` (
  `orderId` int NOT NULL AUTO_INCREMENT,
  `userId` int NOT NULL,
  `masterId` int NOT NULL,
  `serviceId` int NOT NULL,
  `startTime` datetime NOT NULL,
  `endTime` datetime NOT NULL,
  `timeSlotId` int DEFAULT NULL,
  `isApplied` tinyint(1) NOT NULL,
  `isDone` tinyint(1) NOT NULL,
  PRIMARY KEY (`orderId`),
  KEY `FK_user` (`userId`),
  KEY `FK_master` (`masterId`),
  KEY `FK_timeSlotOrder` (`timeSlotId`),
  CONSTRAINT `FK_master` FOREIGN KEY (`masterId`) REFERENCES `masters` (`masterId`) ON DELETE CASCADE,
  CONSTRAINT `FK_timeSlotOrder` FOREIGN KEY (`timeSlotId`) REFERENCES `time_slot` (`timeSlotId`) ON DELETE CASCADE,
  CONSTRAINT `FK_user` FOREIGN KEY (`userId`) REFERENCES `user_info` (`userId`) ON DELETE CASCADE
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

现在我在一个表中有两行:

当我做出这个选择命令时,我得到了正确的结果集:

但是当我指定master的ID(订单表中的masterId列)时,尽管应该有两个订单,但我只得到一个结果 我只是不明白为什么会这样 谢谢

【问题讨论】:

  • 数据类型显示为 INT,但数字显示为与列的左侧对齐。这正常吗?
  • @Strawberry 我不知道,你在问吗?但它让我感到困惑
  • 可以说,我无法复制这个观察结果。 :-( db-fiddle.com/f/n6XpUtTEroz8dpxVmURJY9/0
  • @Strawberry,我看到了你的回答,我知道这看起来令人困惑,但 steveo314 的回答帮助了我,尽管没有在哪里使用,而是使用了有声明
  • 我非常怀疑这是正确的

标签: mysql sql database select where-clause


【解决方案1】:

试试这个:

SELECT * FROM salon.orders GROUP BY orderId HAVING masterId = 29

【讨论】:

  • 不是在哪里,但有声明帮助我,谢谢,你怎么知道的?
  • 如果你把它改成有,我可以标记你的问题,因为它对我有帮助
  • HAVING masterId = 29 是什么更正了您的代码?
  • 是的,但是如何?orderId 不同,你怎么知道 group by 会起作用?
  • 很多编程语言会覆盖重复的键,除非你说不要
猜你喜欢
  • 2021-12-22
  • 1970-01-01
  • 2016-05-17
  • 2018-02-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多