mysql - 许多表上的 ORDER BY SQL

标签 mysql sql sql-server

我有这张 table

Table1
 id  |  name  |
  1  |   a    |
  2  |   c    |

和其他像这样的表

Table2
 id  |  name  |
  1  |   b    |
  2  |   d    |

如何对这两个表进行排序

a b c d

DONE READING THIS但它只会给我这个结果

a c b d

当我尝试这个的时候

SELECT * FROM Table1 AS t1 JOIN Table2 AS t2 ON t2.id = t1.id
ORDER BY t1.name ASC, t2.name ASC;

最佳答案

您可以尝试取两个表的UNION:

SELECT id, name
FROM Table1
UNION ALL
SELECT id, name
FROM Table2
ORDER BY name

如果您想保留有关每条记录的原始来源的信息,您可以为此添加一列:

SELECT id, name, 't1' AS source
FROM Table1
UNION ALL
SELECT id, name, 't2'
FROM Table2
ORDER BY name

更新:

如果 Codeigniter 不支持开箱即用的 UNION,您始终可以将上述查询放入字符串中并在 native 执行:

$sql = "SELECT id, name FROM Table1 UNION ALL SELECT id, name FROM Table2 ORDER BY name";
$this->db->query($sql);

关于mysql - 许多表上的 ORDER BY SQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40989396/

相关文章:

MySQL - 存储过程错误操作数应包含 1 列

mysql - 对多列进行分组时如何选择最大值或最后一条记录?

sql - 获取 Amazon Redshift 中列中特定值之后的下一条记录

SQL分组步骤

sql - 组合多个复杂的 SELECT 语句,使它们出现在一行中

sql-server - 列表项表的 SQL DB 模式最佳实践

mysql - bash 脚本 MYSQL 正在运行?

Mysql GROUP_CONCAT ORDER BY 组合字段

mysql - 当值介于 2 个列值之间时如何返回 MySql 记录?

sql - T-SQL - 使用 "="与 "as"的别名