首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何编写这个简单的MySQL连接查询?

问如何编写这个简单的MySQL连接查询?
EN

Stack Overflow用户
提问于 2011-03-25 02:11:46
回答 3查看 3.1K关注 0票数 1

我需要从两个表中选择记录,一个是城市,另一个是它们共享一个名为parent_state的表列。在此单元格中存储父状态的id。

我需要选择属于某个州的所有城市和社区。例如,如果状态id为10,我需要得到所有具有此值的城市和社区,因为它是parent_state单元。

状态id存储在PHP变量中,如下所示:

$parent_state = '10';

这个查询是什么样的(最好两个表的合并结果应该按字母顺序按列名称排序)?

编辑

是的,我可能真的需要一个工会。我对mysql非常陌生,目前我所能做的就是单独地查询表。

我总是可以单独地查询城市和社区表,但是我想合并结果的原因只是为了按字母顺序列出所述结果。

那么,请有人展示一下联合查询的结果如何?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2011-03-25 02:59:36

使用:

代码语言:javascript
复制
SELECT c.name
  FROM CITIES c
 WHERE c.parent_state = 10
UNION ALL
SELECT n.name
  FROM NEIGHBORHOODS h
 WHERE n.parent_state = 10

UNION ALL将将结果集作为两个查询的组合返回为单个结果集。UNION将删除重复项,而且速度更慢--这就是为什么UNION ALL是一个更好的选择,即使它不太可能有一个同名的城市和社区。老实说,这听起来不是个好主意,因为社区是城市的一部分.

使用UNION还需要注意的是,对于所有UNION d的查询,SELECT子句中需要有相同数量的列(这适用于UNION和UNION ALL)。IE:如果第一个查询在SELECT子句中有三个列,而第二个查询只有两个列,您将得到一个错误。

另外,数据类型必须匹配--这意味着不返回相同位置的日期/时间数据类型是另一个返回整数的查询。

票数 1
EN

Stack Overflow用户

发布于 2011-03-25 02:13:53

您想要的可能不是一个连接,而是一个union。请注意,联合只能从两个联接表达式中选择完全相同的列。

票数 1
EN

Stack Overflow用户

发布于 2011-03-25 02:18:09

代码语言:javascript
复制
select * from city as c
inner join neighborhoods as n
on n.parent_state = c.parent_state
where c.parent_state=10

在城市和夜间没有关系数据的情况下,可以使用左、右连接。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5427821

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档