我有一个mySQL表,其中包含一组参考数据。我有另一张包含数据的表格,用于描述此参考数据的更新或附加条目。由于各种原因,我不会介入,重要的是参考数据保持不变,因为特定的用户来创建记录(因此第二张表)。这些表之间的模式与具有2键复合主键的“自定义”表的例外是相同的。其中一列是“自定义”和参考表之间共享的。是否可以将此业务逻辑放入SQL查询中?
我想在一个单独的SQL语句来执行这些表的业务逻辑如下:
如果在“自定义”表中存在具有相同键的值是什么在参考表中的记录,然后采取“习俗”。否则,取参考值。
我想也许我可以使用RIGHT JOIN,或者甚至可以使用UNION运算符来控制返回的内容。我一直在争论SQL的逻辑。 JOIN将从一个表中获取信息与另一个表中的信息进行连接,这是我真正不需要的。 UNION将简单地移除表格之间的重复...,这很接近。
喜欢的东西:
SELECT * FROM定制UNION SELECT * FROM参考
除了这只会下降重复,如果所有列是相同的。如果有任何不同(这将是自定义条目存在的原因),那么UNION除了将两个表格的内容混合在一起外什么都不做。
我对这一切都错了吗?
感谢您提供的任何见解。
因此,从两个表中获取所有记录,然后在where子句中尝试过滤出结果集中具有其自定义表中的键的记录。对?这是否意味着最终结果集将缺少其自定义表中存在键值的记录? – Raevik 2012-07-12 20:40:53
Wellll,有点。我的自定义表有一个额外的主键列,这意味着技术上可能会有多个自定义记录,并且具有与参考表中的一条记录相同的keyVal。 – Raevik 2012-07-12 20:43:20
Where子句适用于每个单独的选择,而不是整个联合查询。尽管如此,一个'order by'可能会结束整个事情。 – 2012-07-12 20:46:03