gpt4 book ai didi

MySQL 在一个查询中使用多个 SELECT 语句

转载 作者:行者123 更新时间:2023-11-29 01:51:57 28 4
gpt4 key购买 nike

我将一些信息存储在 MySQL 表中,包括没有时间的日期。日期格式是一个字符串,如下所示:“25.08.2016”(日.月.年)。

我想从表中按列降序选择前 50 条记录,但我只想显示具有特定列条目(日期)的行。

这是一个排名系统,我想更新不活跃的人。

我需要组合这 3 个查询:

SELECT * FROM `rank` ORDER BY `rank`.`Score` DESC LIMIT 0 , 50;
SELECT * FROM `rank` WHERE NOT (`TimeStamp1` = DATE_FORMAT(NOW(), '%d.%m.%Y') OR `TimeStamp1` = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%d.%m.%Y'));
UPDATE `rank` SET `inactive` = '1';
  1. 选择前 50 人。
  2. 选择第一个查询的不活跃人员。
  3. 将人员更新为不活跃。

Score 是排名 1,这就是为什么我需要 DESC,我只想将前 50 人标记为不活跃下面什么都没有,低于 50 的人是无关紧要的,这就是我不能使用的原因像这样的声明:

SELECT * FROM `rank` WHERE NOT (`TimeStamp1` = DATE_FORMAT(NOW(), '%d.%m.%Y') OR `TimeStamp1` = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%d.%m.%Y')) ORDER BY `rank`.`Score` DESC LIMIT 0 , 50

是的,它会选择 50 行,但不会选择前 50 行。

顺便说一句,我是用 php 来做的。我可以通过获取来解决问题:

SELECT * FROM `rank` ORDER BY `rank`.`Score` DESC LIMIT 0 , 50;

然后将Accound ID存入一个数组,然后查询:

SELECT * FROM `rank` WHERE NOT (`TimeStamp1` = DATE_FORMAT(NOW(), '%d.%m.%Y') OR `TimeStamp1` = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY), '%d.%m.%Y')) ORDER BY `rank`.`Score` DESC LIMIT 0 , 50;

然后将帐户 ID 与其他结果进行比较,当没有找到匹配项时,我就中断循环。

我不能只用纯 MySQL 来做吗?我不能查询一个东西然后过滤结果吗?

请帮帮我,还有什么问题吗?

最佳答案

这是我的答案。

UPDATE rank AS target
INNER JOIN (
SELECT w.id
FROM rank AS w
INNER JOIN rank AS e ON e.id = w.id
WHERE (w.`TimeStamp1` = DATE_FORMAT(NOW(), '%Y-%m-%d') OR w.`TimeStamp1` = DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 DAY),'%Y-%m-%d'))
ORDER BY w.`Score` DESC
LIMIT 50
) AS source ON source.id = target.id
SET inactive = 1;

关于MySQL 在一个查询中使用多个 SELECT 语句,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39142737/

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