gpt4 book ai didi

MYSQL如何将外部计算值输入到行中

转载 作者:行者123 更新时间:2023-11-29 07:51:50 26 4
gpt4 key购买 nike

我在使用此 MySQL 查询时遇到一些问题。我有两张表,其中一张列出了所有“反对派领导人”(当选的人)以及他们当选的日期。我还有另一张表,其中列出了他们结婚的所有人以及他们结婚的年份。

我正在尝试进行查询,以返回按任命日期排序的所有反对派领导人及其当时的当前配偶姓名和结婚日期。

以下是一位领导者的一些实践数据,日期稍作更改以适应我试图解决的问题类型。

表一:

反对党领袖------当选日期

比兹利 K C,1996-03-19

比兹利 K C,2005-01-28

表二:

反对党领袖----配偶姓名----结婚年份

Beazley K C,玛丽·西卡莱利,1974

Beazley K C,苏西·安纳斯,2004

-

我正在尝试让它达到这样的效果:

反对党领袖------当选日期-----配偶姓名--------结婚年份

Beazley K C,1996-03-19,Mary Ciccarelli,1974

Beazley K C,2005-01-28,苏西·安纳斯,2004

-

到目前为止,我已经掌握了以下基础知识:

选择反对派.leader_name、反对派.time_begin、反对派_marriage.spouse_name、反对派_marriage.year_married'

来自反对派,反对派婚姻

AND反对派.leader_name=opposition_marriage.leader_name

按反对派排序。time_begin

但它给我的结果是,每场婚姻的领导者都会被多次提及。我无法弄清楚搜索另一个表然后将该值放入行中的语法。

任何帮助将不胜感激,我已经为此苦苦挣扎了一段时间了。提前致谢。

最佳答案

我认为这对于相关子查询来说是最简单的。但遗憾的是,您的表中的每一行都没有唯一的标识符。

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;

这可以处理任意数量的婚姻。

现在一些评论:

  • 只为反对派领导人设立一个婚姻表,而不为所有政客设立一个婚姻表,这似乎很奇怪。
  • 粒度为“年”级,因此领导人上任后同年结婚也算与其配偶结婚。
  • 您没有“婚姻结束日期”,因此离婚或丧偶的伴侣在下一次婚姻之前将被视为当前伴侣。
  • 正如我在开头提到的,每一行都应该有一个唯一的标识符。

关于MYSQL如何将外部计算值输入到行中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26203912/

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