gpt4 book ai didi

mysql - UNION 语句不起作用,被迫使用 JOIN(性能主导?)

转载 作者:太空宇宙 更新时间:2023-11-03 11:47:49 25 4
gpt4 key购买 nike

我有两个来自不同服务器的相同表。作为识别重复 PK 的一个简短修复(为了帮助处理更长的修复,因为我们正在处理非常遗留的基础设施),我们决定让第一阶段收集一个记录列表,其主键存在于另一个数据库中,该数据库的表是相同的。即使他们有相同的 PK,他们在元组(或记录)的其余部分仍然会有不同的数据,例如名字、姓氏等。

我正在尝试使用此 UNION 语句,因为它们都是相同的表,但不断收到关于“'Where' 子句中的未知列”的错误

SELECT T.`hospitalno` AS HospitalnoMain, T.`dateencoded` AS DateEncodedMain,
T.`firstname` AS FirstNameMain, T.`lastname` AS LastNameMain
FROM registration.`patmaster` T
UNION
SELECT P.`hospitalno` AS HospitalnoAux, P.`dateencoded` AS DateEncodedAux,
P.`firstname` AS FirstNameAux, P.`lastname` AS LastNameAux
FROM registration.`patmaster` P
WHERE T.`LastNameMain` <> P.`LastNameAux` AND T.`FirstNameMain` <> P.`FirstNameAux`
LIMIT 100

所以我已经接受了这个提取正确数据的语句(至少通过对记录的所有调整来测试查询,它是正确的)。

SELECT * FROM 
(
SELECT T.`hospitalno` AS HospitalnoMain, T.`dateencoded` AS DateEncodedMain,
T.`firstname` AS FirstNameMain, T.`lastname` AS LastNameMain
FROM registration.`patmaster` t
) AS G
LEFT OUTER JOIN
(
SELECT P.`hospitalno` AS HospitalnoAux, P.`dateencoded` AS DateEncodedAux,
P.`firstname` AS FirstNameAux, P.`lastname` AS LastNameAux
FROM registration.`patmaster` p
) H
ON G.HospitalnoMain = H.HospitalnoAux
WHERE G.`LastNameMain` <> H.`LastNameAux` AND G.`FirstNameMain` <> H.`FirstNameAux`
LIMIT 100

--请原谅手动输入格式。

我的问题是,哪个在性能方面更好,因为它将通过两个表提取大量数据。如果它是 UNION,那么我的 UNION 语句有什么问题,因为我尝试了 SELECT 语句的变体,这些变体一直给我相同的“未知列...”错误。提前谢谢你

编辑另外,如果有人知道如何在“代码”中使用 SQL,我将不胜感激。它在这里似乎不起作用

最佳答案

您的 left join 没问题。 . .假设它做你想做的。但是,如果不需要,请不要在 from 子句中使用子查询。 MySQL 实现了这样的子查询,产生了额外的开销。

SELECT T.`hospitalno` AS HospitalnoMain, T.`dateencoded` AS DateEncodedMain, 
P.`hospitalno` AS HospitalnoAux, P.`dateencoded` AS DateEncodedAux, P.`firstname` AS FirstNameAux, P.`lastname` AS LastNameAux
FROM registration.`patmaster` t INNER JOIN
registration.`patmaster` p
ON p.hospitalno = t.hospitalno
WHERE t.`LastNameMain` <> p.`LastName` AND t.`FirstNameMain` <> p.`FirstName`
LIMIT 100;

注意:无论如何,where 子句都会将外连接转换为内连接,因此有理由使其成为外连接。

关于mysql - UNION 语句不起作用,被迫使用 JOIN(性能主导?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37557965/

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