有没有办法将变量条件放入SQL中的连接中?
我的问题是这样的:我需要将两个表连在一起,保留一个表中的所有数据。这将是一对一的比赛。我需要在一对多比赛中设定标准。例如:有没有办法将变量条件放入SQL中的连接中?
TableA TableB
Name Date Cat Name Date
AAA 1/1/17 Z11 AAA 1/2/17
AAA 1/4/17 Y22 AAA 1/6/17
AAA 1/7/17 X33 BBB 1/2/17
BBB 1/1/17 A44
BBB 1/3/17 B55
我需要加入到表A表B,保持所有的表B,从记录,加盟的名称列。我希望加入到TableA中的“本地记录”是仍然大于TableB中的日期的最小日期。因此,理想的结果是:
Results
TableB.Name TableB.Date TableA.Cat
AAA 1/2/17 Y22
AAA 1/6/17 X33
BBB 1/2/17 B55
我知道我要上两个人的名字外连接,但不知道如何在“地方标准”工作缺乏一个更好的方式来句话吧。这是可能的,它是如何完成的?
我会从tableA中创建一个子查询,以获得您想要的结果并加入。
子查询排除小于b.dates的a.dates。随着那些剩下的,抓住最小。
加入了这一切到tableB的
SELECT b.name ,
b.date ,
a.cat
FROM tableb b
JOIN (SELECT a1.name ,
MIN(a1.date) AS date
FROM tableA a1
JOIN tableb b1 ON a1.name = b1.name
AND a1.date > b1.date
) a ON a.date > b.date
AND a.name = b.name;
这不起作用,因为一件事日期不等于* – Bohemian
啊,对不起,习惯的力量,我会把=改成一个> – LordBaconPants
其实他想要A的最小日期大于B.我认为你的解决方案重刑是正确的,但你的子查询也需要包含tableB。 – jfneis
我会用一个相关子查询:
select b.*,
(select a.cat
from a
where a.name = b.name and a.date > b.date
order by a.date asc
limit 1
) as cat
from b;
见http://meta.stackoverflow.com/questions/333952/why-should- i-provide-an-mcve-for-what-seems-to-the-very-simple-sql-query – Strawberry