- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试通过添加新字段来修复一些数据。
我有几个月前的备份,并且已将此数据库恢复到我的服务器。
我正在查看名为 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/
我是一名优秀的程序员,十分优秀!