从多个表中加入 mysql 4.0 数据的最快方法?

Posted

技术标签:

【中文标题】从多个表中加入 mysql 4.0 数据的最快方法?【英文标题】:Fastest way to join mysql 4.0 data from multiple tables? 【发布时间】:2010-10-13 00:22:01 【问题描述】:

我有 3 个 mysql 4.0 表:都有字段 ID(int)、type(int) 和另一个字段 valuevarchar(255)、tinyintint

我需要将它们全部写出来,最终得到三个 DataTable,循环它们,并将行创建到一个临时表中(在 .NET 1.1 中)。

你有没有比这更快/更干净的方法来加入或只写出这些数据?

【问题讨论】:

【参考方案1】:

我不确定您是否要在一个查询中实际加入或显示所有三个表的结果。

如果您只是想要平坦的结果,最好的办法是进行联合,例如:

SELECT 
    ID, 
    Type, 
    Convert(varchar(255), Value) as Value 
FROM 
    table1
UNION
SELECT 
    ID, 
    Type, 
    Convert(varchar(255), Value) as Value 
FROM 
    table2
UNION
SELECT 
    ID, 
    Type, 
    Convert(varchar(255), Value) as Value 
FROM 
    table3

注意:我正在进行转换,以便您可以获得所有三个字段的最稳定形式(varchar 版本)。

【讨论】:

谢谢,实际上即使没有转换也能正常工作,但我很担心,因为这样我只能得到 410 个结果,而不是 420 个结果 - 也许有些是重复的并且被合并了? @Spikolynn:可能在您的整数和小整数中发生了隐式转换(或者您的 varchars 正试图转换为整数),当转换失败时,它会从结果集。 TheTXI:我尝试使用 Convert(Value, char) 而不是 Value 全部 3 次,但结果仍然不够。不过我并不介意,因为如果它们只是我认为的重复,应用程序应该可以正常工作。 是的,我今天检查了重复项,它们与丢失记录的数量完全相同。也许我应该在三个字段上添加一个唯一约束 哦,我不得不使用转换,否则我会得到一个关于不兼容列类型的 .NET 异常:S

以上是关于从多个表中加入 mysql 4.0 数据的最快方法?的主要内容,如果未能解决你的问题,请参考以下文章

从 MySQL 中的表中加入单行

TSQL - 如何从一个结果集中的多个表中加入 1..*?

如何从多个表中加入 SELECT,其中 SELECTS 基于不同的条件?

SQL Alchemy奇怪的行为从同一个表中加入多个列

如何在 Laravel 中加入来自不同主机的多个数据库

在 Spark 中加入多个表的有效方法 - 设备上没有剩余空间