gpt4 book ai didi

MySQL 如何从一张表中联接并选择可见记录?

转载 作者:行者123 更新时间:2023-11-29 14:56:00 27 4
gpt4 key购买 nike

我正在尝试通过添加新字段来修复一些数据。

我有几个月前的备份,并且已将此数据库恢复到我的服务器。

我正在查看名为 pads 的表,其主键是 PadID,重要字段称为 RemoveMeDate。在我恢复的(较旧的)数据库中,RemoveMeDate 中设置的实际日期的记录较少。我的控制日期是 2001-01-01 00:00:00 这意味着该记录不是隐藏的,也不是可见的。

我需要做的是从旧数据库/表中选择具有控制日期的所有记录,并与未设置控制日期的新数据库/表中的记录连接。

我希望我的解释是正确的。

我会用数字再试一次。我在旧表(设置了控制日期)中有 80,000 条可见记录,在新数据库/表中有 30,000 条可见记录。我需要从旧数据库中选择 50,000 个,以执行更新查询。

这是我的查询,我无法按照我的意愿进行工作。 jules-fix-reasons 是旧数据库,jules 是新数据库。

select p.padid 
from `jules-fix-reasons`.`pads` p
JOIN `jules`.`pads` ON p.padid = `jules`.`pads`.`PadID`
where p.RemoveMeDate <> '2001-01-01 00:00:00' AND
`jules`.`pads`.RemoveMeDate = '2001-01-01 00:00:00'

编辑 - 也许我可以提供一个示例,而不是 10,000 条记录,我将显示 1 个示例。

p.pads (old table)
PadID=1 RemoveMeDate=2010-12-01 09:00:00
PadID=2 RemoveMeDate=2001-01-01 00:00:00
PadID=3 RemoveMeDate=2001-01-01 00:00:00
PadID=4 RemoveMeDate=2001-01-01 00:00:00
PadID=5 RemoveMeDate=2001-01-01 00:00:00
PadID=6 RemoveMeDate=2001-01-01 00:00:00
PadID=7 RemoveMeDate=2001-01-01 00:00:00
PadID=8 RemoveMeDate=2001-01-01 00:00:00
PadID=9 RemoveMeDate=2001-01-01 00:00:00
PadID=10 RemoveMeDate=2009-01-05 00:10:00

因此有 8 条记录(实际表中 aks=80,000)可见。

Jules.pads
PadID=1 RemoveMeDate=2010-12-01 09:00:00
PadID=2 RemoveMeDate=2010-12-01 08:00:00
PadID=3 RemoveMeDate=2010-12-01 07:00:00
PadID=4 RemoveMeDate=2010-12-01 06:00:00
PadID=5 RemoveMeDate=2001-01-01 00:00:00
PadID=6 RemoveMeDate=2001-01-01 00:00:00
PadID=7 RemoveMeDate=2001-01-01 00:00:00
PadID=8 RemoveMeDate=2001-01-01 00:00:00
PadID=9 RemoveMeDate=2001-01-01 00:00:00
PadID=10 RemoveMeDate=2009-01-05 00:10:00

因此有 5 条记录(实际表中 aks=50,000)可见。

所以我想要的 SQL 查询将从表 P 中返回记录 2,3,4

编辑 ajreal - 工作查询(仅供引用)

SELECT old_table.padid
FROM `jules-fix-reasons`.`pads` AS old_table
JOIN `jules`.`pads` AS new_table ON old_table.padid = new_table.`PadID`
WHERE new_table.RemoveMeDate <> '2001-01-01 00:00:00'
AND old_table.RemoveMeDate = '2001-01-01 00:00:00'

最佳答案

What I need to do is select all the records from the older database / table with the control date and join with those from the newer db /table where the control date is not set.

你只需要翻转条件

select old_table.padId, new_table.padId
from `jules-fix-reasons`.`pads` as old_table
JOIN `jules`.`pads` as new_table
ON old_table.padid = `jules`.`pads`.`PadID`
where new_table.RemoveMeDate<>'2001-01-01 00:00:00' AND
old_table.RemoveMeDate='2001-01-01 00:00:00'

PS:是时候学习如何为表别名起一个好名字了

关于MySQL 如何从一张表中联接并选择可见记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4634389/

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