我对此MySQL查询存在一些问题。我有两张桌子,其中有一张桌子,上面列出了所有#34;反对党领袖"(当选的人选)以及他们当选的日期。而且我还有另一张桌子,上面列出了他们结婚的所有人,以及他们结婚的那一年。
我试图提出一个查询,以便在他们的约会时间和他们当前的配偶姓名,在他们结婚的时间和结婚日期之前,将所有被反对的领导人都归还。
以下是一位领导者的一些练习数据,日期有所改变,以适应我试图解决的问题。
表一:
Leader_of_Opposition ------当选日期
Beazley K C,1996-03-19
Beazley K C,2005-01-28
表二:
Leader_of_Opposition ----配偶的名字----结婚年
Beazley K C,Mary Ciccarelli,1974
Beazley K C,Susie Annus,2004
我试图让它达到这样的目的:
Leader_of_Opposition ------当选日期------配偶的名字--------结婚年
Beazley K C,1996-03-19,Mary Ciccarelli,1974
Beazley K C,2005-01-28,Susie Annus,2004
到目前为止,我已经掌握了以下基础知识:
SELECT opposition.leader_name,opposition.time_begin,opposition_marriage.spouse_name,opposition_marriage.year_married'
来自反对派,反对派婚姻
AND opposition.leader_name = opposition_marriage.leader_name
ORDER BY opposition.time_begin
但是它给了我结果,每个婚姻都会多次提到领导者。我无法找出搜索其他表的语法,然后将该值放入行中。
任何帮助都会非常感激,现在已经暂时对抗这个问题了。 提前谢谢。
答案 0 :(得分:2)
我认为这对于相关子查询来说是最简单的。但是,您的表格中没有每行的唯一标识符。
SELECT o.leader_name, o.time_begin,
(select om.spouse_name
from opposition_marriage om
where o.leader_name = om.leader_name and om.year_married <= year(o.date_elected)
order by om.year_married desc
limit 1
) as spouse_name,
(select om.year_married
from opposition_marriage om
where o.leader_name = om.leader_name and om.year_married <= year(o.date_elected)
order by om.year_married desc
limit 1
) as year_married
FROM opposition o
ORDER BY o.time_begin;
这可以处理任意数量的婚姻。
现在有些评论: