【问题标题】:Select query for multiple tables选择查询多个表
【发布时间】:2013-11-12 12:34:29
【问题描述】:

我有 A01、B01、C01 等表...结构相同。

+----+-----+
| ID | val |
+----+-----+
|  1 | a   |
|  2 | b   |
+----+-----+

+----+-----+
| id | val |
+----+-----+
|  1 | c   |
|  2 | d   |
+----+-----+

+----+-----+
| id | val |
+----+-----+
|  1 | e   |
|  2 | f   |
+----+-----+

是否可以有一个查询显示所有表中的“val”列?

另外,如果创建了新表,则不应更改查询。

我将在 PHP 网页上运行它。

【问题讨论】:

  • 没有。这是不可能的。规范您的设计。

标签: php mysql select join union


【解决方案1】:

SQLFiddle

SELECT t1.val
  FROM table1 AS t1
UNION
  SELECT t2.val FROM table2 AS t2
UNION
  SELECT t3.val FROM table3 AS t3

【讨论】:

  • @echo_Me 我正在使用 UNION 的路上,但是在我尝试过内部连接之前,它怎么可能是一样的呢? :(
【解决方案2】:

你不能在 mysql 中创建新表。你必须定义它们。对于给定的表格,您可以这样做

   select val from `A01`
   union all
   select val from `B01`
   union all
   select val from `C01`

demo

【讨论】:

    【解决方案3】:

    使用所有需要的表创建一个带有union or union all 子句的view。如果您将来创建表,只需更改视图以包含该表。

    CREATE VIEW AS MYVIEW
    SELECT VAL FROM A01 UNION ALL
    SELECT VAL FROM B01...
    

    始终使用相同的查询来获取数据:

    SELECT VAL FROM MYVIEW
    

    【讨论】:

    • 所有答案都很好,由于意见建议,必须将您标记为最佳
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-08-16
    • 1970-01-01
    • 1970-01-01
    • 2013-11-15
    • 2011-07-01
    • 1970-01-01
    • 2014-03-29
    相关资源
    最近更新 更多