gpt4 book ai didi

MySQL - 不同无关表之间的单个查询与多个查询

转载 作者:行者123 更新时间:2023-11-29 05:55:29 25 4
gpt4 key购买 nike

我需要从两个不同且不相关的表中获取两列,有两种方法可以做到这一点:

  1. 发送 2 个单独的查询:

    SELECT * FROM table_a WHERE id = "";

    SELECT * FROM table_b WHERE id = "";

  2. 发送 1 个查询:

    选择 a.*, b.*
    FROM table_a AS a, table_b AS b
    WHERE a.id = ""AND b.id = "";

    • 我想知道是否有相同或更好的?
    • 如果没有明显更好的选择,您更喜欢哪一种,为什么?

更新:

  • 我故意按ID 查询,因此每个表只有 1 个结果

最佳答案

您提到的两种方式都可能返回不同的结果集,这取决于您的表中存在的数据。

但是如果你确定每个查询只返回单行那么

两个单独的查询比连接要好

SELECT * FROM table_a WHERE id = "";
SELECT * FROM table_b WHERE id = "";

你也可以使用类似下面的东西

SELECT * FROM table_a WHERE id = ""
UNION
SELECT * FROM table_b WHERE id = "";

从性能的角度来看,加入总是代价高昂

现在考虑您的查询(它如何返回不同数量的记录)

SELECT a.*, b.*
FROM table_a AS a, table_b AS b
WHERE a.id = "" AND b.id = "";

假设 table_a 中有 2 行 id=""和 table_b 中的 3 行,其中 id =""

然后 DB 将在这个连接查询的情况下返回结果集中的 6 行 (2 X 3 = 6)。在上面提到的方式#1 中,DB 将仅返回 5 行 (2 + 3)

两种方式的结果集中的列数也会不同如果table_a中有2列,table_b中有2列然后Way#1 将仅包含结果集中的 2 列而在方法#2 中,结果集中将有 4 列(每个表中有 2 列)

关于MySQL - 不同无关表之间的单个查询与多个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49766111/

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