sql - 一个查询而不是四个 - 这可能吗?

标签 sql mysql phpmyadmin union

我必须从四个表中获取数据。我用四个查询编写脚本,但我在 ajax 中使用它,我不想通过一个查询来完成。 这是查询...

$query1 = "SELECT `id`,`name_ar` FROM `tour_type` ORDER BY `order`";
$query2 = "SELECT `id`,`name_ar` FROM `hotel_type` ORDER BY `order`";
$query3 = "SELECT `id`,`name_ar` FROM `food_type` ORDER BY `order`";
$query4 = "SELECT `id`,`name_ar` FROM `cities` WHERE `id_parrent` = '$id_parrent' ORDER BY `name_ar`";

是否可以写在一个查询中? 谢谢

表格结构 游览类型

id | name_ar | name_ru | name_en | order |

food_type
id | name_ar | name_ru | name_en | order |

hotel_type
id | name_ar | name_ru | name_en | order |

cities
id | id_parrent | name_ar | name_ru | name_en | order |

最佳答案

UNION [ALL] 函数允许您组合多个查询,但所有查询的列数据类型和顺序必须相同。此外,UNION 将删除重复项 - 使其比使用 UNION ALL(不会删除重复项)慢。

也就是说,UNION 语句不允许每个语句都使用 ORDER BY,但是如果您将查询放在括号内,MySQL 会支持这一点。使用:

(SELECT id, name_ar FROM tour_type ORDER BY order)
UNION ALL
(SELECT id, name_ar FROM hotel_type ORDER BY order)
UNION ALL
(SELECT id, name_ar FROM food_type ORDER BY order)
UNION ALL
(SELECT id, name_ar FROM cities WHERE id_parent = ? ORDER BY name_ar)

关于sql - 一个查询而不是四个 - 这可能吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2850979/

相关文章:

mysql - Rails 获取每个标签的最新 n 个帖子

mysql - 我无法使用 XAMPP 登录 MySQL

mysql - 如何使同一表中的一列作为自动增量其他列可以为主键

MySQL - 查询输出合并数据

sql连接问题

sql - 雪花 - Dense_rank 从 2 而不是 1 开始

authentication - PHP mysql_query() 问题

c++ - C++ 的 SQL 请求助手

mysql - 插入新行时,是否必须包含查询中为空的列?

mysql - 使用 Loopback 和 MySQL 更正 IS NULL 值的语法