这本质上是一个关于构建 SQL 查询的问题。db 是用 sqlite3 实现的。我是一个相对较新的 SQL 用户。
我有两张桌子,想以一种不寻常的方式加入它们。下面是一个例子来解释这个问题。
表1(t1):
id year name
-------------------------
297 2010 Charles
298 2011 David
300 2010 Peter
301 2011 Richard
表 2 (t2)
id year food
---------------------------
296 2009 Bananas
296 2011 Bananas
297 2009 Melon
297 2010 Coffee
297 2012 Cheese
298 2007 Sugar
298 2008 Cereal
298 2012 Chocolate
299 2000 Peas
300 2007 Barley
300 2011 Beans
300 2012 Chickpeas
301 2010 Watermelon
我想加入关于 id 和 year 的表格。问题是 (1) id 必须完全匹配,但是如果表 2 中没有与表 1 中年份的完全匹配,那么我想选择下一个(较低)可用的年份。我想要制作的那种选择会给出以下结果
id year matchyr name food
-------------------------------------------------
297 2010 2010 Charles Coffee
298 2011 2008 David Cereal
300 2010 2007 Peter Barley
301 2011 2010 Richard Watermelon
总而言之,id=297 与表 1 中给出的 year=2010 完全匹配,因此从表 2 中选择了 id=297, year=2010 的对应行。id=298, year=2011 没有匹配的年份在表 2 中,因此选择了下一个可用年份(小于 2011 年)。如您所见,我还想知道匹配的年份(准确或不准确)实际上是什么。
我非常感谢(1)一个指示(是/否的答案)这是否可以单独在 SQL 中完成,或者我是否需要查看 SQL 之外,以及(2)一个解决方案,如果这不是太繁琐的话。