【问题标题】:Merging mysql data from two tables into one dataset and updating将两个表中的mysql数据合并到一个数据集中并更新
【发布时间】:2014-01-06 16:22:13
【问题描述】:

我有两个名称不同的相同表,我想使用某种查询将它们合并到一个可用的数组数据集中。我听说 UNION 函数对此很有用,但我以前从未使用过它。

好的,下面是一些伪表代码:

TABLE_1 和 TABLE_2

我用来从两个表中获取数据的查询是:

SELECT col_1, col_2 FROM TABLE_ WHERE ...

╔═════════╦═══════════╗
║ col_1   ║   col_2   ║
╠═════════╬═══════════╣
║      37 ║         1 ║
║      37 ║         2 ║
║     ... ║       ... ║
╚═════════╩═══════════╝

如何将两个表中的数据组合起来以获得一个数据集?我也想更新数据集中的记录,但如果我不知道数据来自哪个表,我该怎么做?

提前致谢。

【问题讨论】:

  • “合并到一个数据集”不清楚...插入新表?现有表?在数组中以某种方式使用?
  • 我已将其更新为可用数组数据集*
  • 好的,那么是的,下面的答案将起作用。
  • 更新了答案以包含一个名为“original_table”的列,因此您可以在必要时关闭它。

标签: mysql union


【解决方案1】:

使用联合:

(SELECT col_1, col_2, 'TABLE_1' AS original_table FROM TABLE_1 LIMIT 0,250)
UNION
(SELECT col_1, col_2, 'TABLE_2' AS original_table FROM TABLE_2 LIMIT 0,250)

更多信息:

UNION ALL 也是一个选项,它会给你重复相同的行(根据你提供的数据,你似乎不需要这个)。

更新记录只需使用 where col_1 = {value} and col_2 = {value2}... 与创建者是哪个表无关。

编辑:它正在工作http://sqlfiddle.com/#!2/71a88/1

【讨论】:

  • 如果我希望从第一个表中获取 250 行,从第二个表中获取 250 行,我会使用 LIMIT 250 和 LIMIT 500 吗?
  • 不,你会在每个选择上加上LIMIT 0,250
  • 喜欢吗?答案更新了限制和括号
  • 是的,太好了,现在可以了,谢谢!关于更新,我是否只需将 SELECT 替换为 UPDATE 并添加 WHERE 逻辑?
  • 更新原表?好吧update syntax is different,但是是的,你只会SET col_1 = {newValue} WHERE col_1={oldvalue} AND col_2={oldvalue2}
猜你喜欢
  • 2015-08-05
  • 1970-01-01
  • 2015-10-29
  • 2018-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多