我有两个表,想要进行左连接,并使用两个表中的日期获取最新数据。它不会从左表中提取所有数据
SELECT Firsttable.Username, Secondtable.city
FROM Firsttable
LEFT JOIN Secondtable ON (Firsttable.Username = Secondtable.Account_Name)
WHERE (
Firsttable.Questions <> 5
AND Firsttable.CreateDate = '2018-02-06 09:41:38.000'
AND Secondtable.CreateDate = '2018-02-06 09:07:47.000'
)
OR (
Firsttable.Questions <> 5
AND Firsttable.CreateDate = '2018-02-06 09:41:38.000'
AND Secondtable.CreateDate IS NULL
)
答案 0 :(得分:0)
由于您没有向我们提供任何数据,您将不得不进行自己的测试。
首先,将您的查询分解为更小的部分,看看您想要的数据是否确实存在。
SELECT Firsttable.Username
FROM Firsttable
LEFT JOIN Secondtable ON
(Firsttable.Username = Secondtable.Account_Name
AND Firsttable.Questions <> 5
AND Firsttable.CreateDate = '2018-02-06 09:41:38.000'
)
如果第一个表中的数据有效,则会显示。如果您没有得到任何结果,则可能需要通过消除时间来放宽日期比较。但只有你知道你的数据是如何限制的。这也可能意味着您的Secondtable.Account_Name
可能与您认为的Firsttable.Username
不匹配。使用此查询,直到获得您期望的良好数据。
一旦你知道你的第一张表中有好的数据,那么就为你的第二张表添加选择标准:
SELECT Firsttable.Username, Secondtable.city
FROM Firsttable
LEFT JOIN Secondtable ON
(Firsttable.Username = Secondtable.Account_Name
AND Firsttable.Questions <> 5
AND Firsttable.CreateDate = '2018-02-06 09:41:38.000'
)
WHERE (
Secondtable.CreateDate = '2018-02-06 09:07:47.000'
OR Secondtable.CreateDate IS NULL
)
如果这会丢失所有数据,那么您就知道某些内容与您的Secondtable.CreateDate
不符。可能是你对Time的使用过于紧缩。只是在日期匹配,看看是否有帮助。但是,如果您知道时间很重要,请返回上面的第一个查询并打印出所有不同的Secondtable.CreateDate
,以查看您的日期是否是结果集的一部分。关闭一秒可能会导致您的数据不匹配。
使用这两个查询,直到找到带出数据的组合。
如果您仍有问题,则必须为每个表发布一些示例数据,以便我们了解如何更好地为您提供帮助。