从多个表中加入 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) 和另一个字段 value 是 varchar(255)、tinyint 或 int。
我需要将它们全部写出来,最终得到三个 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 数据的最快方法?的主要内容,如果未能解决你的问题,请参考以下文章