sql - mysql select查询帮助--ORDER BY

标签 sql mysql database union

我正在尝试构建一个选择查询,它将获取 4 个表的所有列,然后按“名称”列排序并显示结果(所有表中都相同)。我仍在学习 MySQL 的诀窍。

我发现由于列共享名称“name”,因此仅显示最后一个表的结果。有没有一种方法可以执行此查询并保留所有表中的所有数据?

我应该使用不同的列名称吗?共享一个名称似乎更容易,因为每个名称中的信息相同。

SELECT * FROM table_one, table_two, table_three, table_four ORDER BY...

四个表没有连接,结构不同......一些列名是共享的(看起来我应该修复它,我现在仍然可以),但每个表都有不同数量的列。

谢谢!

最佳答案

如果四个表之间没有关系,请使用 UNION 代替:

SELECT a.name
  FROM TABLE_ONE a
UNION
SELECT b.name
  FROM TABLE_TWO b
UNION
SELECT c.name
  FROM TABLE_THREE c
UNION
SELECT d.name
  FROM TABLE_FOUR d
ORDER BY name

这里有两个选项 - UNION 速度较慢,因为它将删除重复项 - 最终列表将是唯一的名称列表。 UNION ALL 速度更快,因为它不会删除重复项。

要从表中获取列,请使用:

SELECT a.*,
       b.*,
       c.*,
       d.*
  FROM (SELECT a.name
          FROM TABLE_ONE a
        UNION
        SELECT b.name
          FROM TABLE_TWO b
        UNION
        SELECT c.name
          FROM TABLE_THREE c
        UNION
        SELECT d.name
          FROM TABLE_FOUR d) x
LEFT JOIN TABLE_ONE a ON a.name = x.name
LEFT JOIN TABLE_TWO b ON b.name = x.name
LEFT JOIN TABLE_THREE c ON c.name = x.name
LEFT JOIN TABLE_FOUR d ON d.name = x.name

关于sql - mysql select查询帮助--ORDER BY,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2320128/

相关文章:

mysql - 使用 Codeigniter 执行多条 sql 语句

mysql - 如何根据MySQL中非空值的最大数量合并行

php - 为 PHP 脚本的 POST 请求创建任务以在 MySQL 数据库中添加条目

MySQL通过乘法自增字段

sql - 连接表以对另一个表进行子查询,然后对结果进行排序

sql - 在 DB 中使用 MD5(URL) 代替 URL for WHERE

mysql - 使用自连接和子查询优化 UPDATE SQL 查询

MySQL - 数据查询树?

database - 如何在列上创建外键,其中的每条记录都可能引用多个表中的一个列?

mysql - 尽管有索引,查询仍然非常慢