我正在试着从两张table上找出ID的差异。我已经发布了表1和表2的样例数据。我正在考虑使用外部联接,但意识到这可能不是最好的主意。使用Join查找所需目标的简单方法是什么?在这种情况下,任何JOIN子句会有帮助吗?如果不是,解决这一问题的最佳(但简单)方法是什么?我很感谢大家在这方面的帮助!
表1:
Person|套餐ID|日期
-|-|
1|Y788|01-01-2020
2|T932|01-02-2020
3|W345|01-03-2020
3|S122|01-03-2020
4|F567|2020年01月04日
4|H767|2020年01月04日
表2:
Person|套餐ID|日期
-|-|
1|Y788|01-01-2020
2|T932|01-02-2020
3|W345、S122|01-03-2020
4|F567、H767|2020年01月04日
5|C555|01-05-2020
预期目标(编码后):
Person|套餐ID|日期
-|-|
5|C555|01-05-2020
代码:
SELECT Person, Package ID, Date
from table1, table2
OUTER JOIN Person.table1 = Person.table2
Group by Date
Order by Person;
1条答案
按热度按时间nzrxty8p1#
在我的评论中,我已经提到,将数据保存在分隔列中不是一个好主意,因为这会使问题复杂化,并使查询速度变慢。请参阅Is storing a delimited list in a database column really that bad?
其余部分是基本的SQL
需要左联接才能获得表2中不在表1中的所有行。
WHERE子句只起作用,因为表2中的数据之间没有空格,所以如果有空格,则需要替换它们。
fiddle