【问题标题】:nesting select statement in MySQLMySQL中的嵌套select语句
【发布时间】:2013-04-15 09:47:37
【问题描述】:

我是关系数据库的新手... 我想列出同一个数据库中许多表中的所有数据。

我有一个包含其他表名称的表。像这样:

mysql> select * from CarKeys;


+-------+
| Name  |
+-------+
| Audi  |
| Honda |
+-------+


mysql> select * from Audi;

+-------+---------+--------+
| Model | NumDoor | Colour |
+-------+---------+--------+
| A4    | 4       | White  |
+-------+---------+--------+


mysql> select * from Honda;
+------------+---------+--------+
| Model      | NumDoor | Colour |
+------------+---------+--------+
| Civic      | 4       | White  |
| Civic      | 4       | White  |
| HomdaModel | 5       | Red    |
+------------+---------+--------+

但是现在,我不想分别给select * from Hondaselect * from Audi 打电话。 我想要一个命令,它将 select * from 所有在 CarKeys 表中命名的表

我试过这个:
SELECT * FROM (SELECT * FROM CarKeys);

但我收到一条错误消息:
ERROR 1248 (42000): Every derived table must have its own alias

如何获取此数据库中所有表的所有信息?我使用的 Schema 的名称是 WebApp

【问题讨论】:

    标签: mysql database jdbc


    【解决方案1】:

    这个表关系不好,你可以试试:

    SELECT * FROM Audi
    UNION
    SELECT * FROM Honda
    

    结果:

    +------------+---------+--------+
    | Model      | NumDoor | Colour |
    +------------+---------+--------+
    | A4         | 4       | White  |
    | Civic      | 4       | White  |
    | Civic      | 4       | White  |
    | HomdaModel | 5       | Red    |
    +------------+---------+--------+
    

    【讨论】:

      【解决方案2】:

      您的 SQL 设计存在大问题。你不应该这样称呼桌子。为什么不为所有汽车创建一个表并添加一个引用包含名称的表的列?

      +-------+-------+
      | ID    | Name  |
      +-------+-------+
      | 1     | Audi  |
      | 2     | Honda |
      +-------+-------+
      
      
      
      +------------+---------+--------+--------+
      | Model      | NumDoor | Colour | Brand  |
      +------------+---------+--------+--------+
      | Civic      | 4       | White  | 2      |
      | A4         | 4       | White  | 1      |
      | Civic      | 4       | White  | 2      |
      | HomdaModel | 5       | Red    | 2      |
      +------------+---------+--------+--------+
      

      【讨论】:

        【解决方案3】:

        您必须使用存储过程

        使用循环,将Carkeys.Name 存储在variable (v1)

        现在使用 Prepared Statement

        执行
        select * from v1
        

        【讨论】:

          猜你喜欢
          • 2011-11-03
          • 2023-04-03
          • 2010-09-12
          • 1970-01-01
          • 2013-08-29
          • 1970-01-01
          • 1970-01-01
          • 2011-06-07
          • 2020-07-29
          相关资源
          最近更新 更多