gpt4 book ai didi

MySql 使用嵌套查询检查最旧的记录与当前记录

转载 作者:行者123 更新时间:2023-11-29 14:19:36 25 4
gpt4 key购买 nike

我的脑子在旋转,试图找出我需要使用的 SQL 查询。我尝试了各种嵌套查询和自连接,但一切都让我失败。我想我想太多了。

基本思想:我有一个表,我们称之为 OrderTable,表中有四个(相关)字段:OrderIdCustomerId餐厅ID订购时间

当客户下订单时,日期/时间戳会添加到 OrderTime 字段中。其他三个字段只是整数,其中 OrderId 字段为主键(并且自动递增)。

我正在尝试编写一个查询,该查询将返回 CustomerId 记录列表,其中该客户的第一条记录(最早日期)是特定日期(假设“2012-03-14”) ),RestaurantId 是一个特定的数字(假设是 29)。

目前我只能假设这是一种过于复杂的方法。另外,当有多个记录与我的子查询匹配时,我当前收到错误“#1242 - 子查询返回超过 1 行”。

有人可以帮我提供更优雅的解决方案吗?谢谢!

当前查询:

SELECT `CustomerId` 
FROM `OrderTable`
WHERE `OrderTime` LIKE '%2012-03-14%'
AND `RestaurantId`='29'
AND `OrderId`=(SELECT `OrderId`
FROM `OrderTable`
WHERE `RestaurantId`='29'
GROUP BY `CustomerId`
ORDER BY `OrderTime` ASC
)

最佳答案

编辑:John Totet Woo 在这一点上可能是正确的,但仍请参阅我帖子的第二部分以避免使用 LIKE 子句:)

我可能对您的要求有点困惑,但是如果您将子查询从“=”更改为 IN,您会得到您想要的结果吗?

SELECT `CustomerId` 
FROM `OrderTable`
WHERE `OrderTime` LIKE '%2012-03-14%'
AND `RestaurantId`='29'
AND `OrderId` IN (SELECT `OrderId`
FROM `OrderTable`
WHERE `RestaurantId`='29'
GROUP BY `CustomerId`
ORDER BY `OrderTime` ASC
)

最让我困扰的是,你可以使用

AND DATE(OrderTime) = '2012-03-14'

而不是LIKE

关于MySql 使用嵌套查询检查最旧的记录与当前记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11972415/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com