【问题标题】:Colatting data from multiple tables [closed]整理来自多个表的数据[关闭]
【发布时间】:2011-07-14 17:09:42
【问题描述】:

当我从 mySQL 数据库中的多个表中检索数据时,最好使用哪种方法,联接、联合或视图?各有什么优缺点,最适合什么情况?

【问题讨论】:

  • 这里没有一个正确的答案。这取决于您拥有的数据以及您要如何处理这些数据。
  • 视图可以使用 JOIN 和/或 UNION,并且如果不能发生谓词推送,则可能不太可能直接针对表执行。但我同意 Joel 的观点——这个问题太宽泛了,应该针对特定的数据库。

标签: sql join view union


【解决方案1】:

这实际上取决于您希望如何显示这些数据。

连接用于选择相关数据并将其全部显示在同一行中,其中联合用于将来自两个不同选择语句的数据附加在一起。

在您的情况下,当您有一个非常复杂的查询并且您希望简化选择数据所需的选择语句时,应该使用视图。如果您要一遍又一遍地使用 select 语句,它会减少混乱。使用视图还有很多其他原因,但我认为它们与这个问题无关。

【讨论】:

  • 谢谢,这是我想要的信息
【解决方案2】:

@jworrin 说了什么。

SQL 都是关于集合操作的。

  • A inner join B设置交集:A∩B

  • A union B 是……好吧……设置联合:A ∪ B

  • A left join B 是一个复合:( A ∉ ( A ∩ B ) ) ∪ ( A ∩ B )

  • right join 与左连接相同。只是语法糖来交换所涉及的表/集的位置。 B right join AA left join B 相同。

  • A full join B 也是复合的:( A ∉ ( A ∩ B ) ) ∪ ( A ∩ B ) ∪ ( B ∉ ( A ∩ B ) )

你使用哪个完全取决于问题。

view 本质上是一个不变的固定选择语句。它允许您呈现“虚拟表”,例如,规范化数据库的非规范化平面视图。视图对于限制对列和/或表的访问也很有用。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-04
    • 1970-01-01
    • 2015-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-18
    相关资源
    最近更新 更多