mySQL 组合来自表查询的数据


mySQL combining data from tables query

只是做了一些mySQL问题,并且已经解决了除了最后一个问题之外的所有问题(当然)。

我有两张桌子。

提出的问题是"编写一个查询以返回与任何人居住在同一城市的所有作者的列表出版商。

抱歉,因为我不允许发布图片。但是,仍然很容易找出其价值的标题。我在前几个中添加了逗号以分隔它们,以便您了解一般工作原理。

"发布者"表

PUB_ID PUB_NAME CITY STATE COUNTRY
0736 New Moon, Palo Alto, CA, USA
0877 Binnet & Hardley, Washington, DC, USA
1389 Algodata, Berkeley, CA, USA
1622 Five Lakes, Chicago, IL, USA
1756 Ramona Publishers Oakland CA USA
9901 GGG&G Munich NULL NULL
9952 Scootney Books New York NY USA
9999 Lucerne Publishing Paris NULL France

作者表

AU_ID LNAME FNAME PHONE ADDRESS CITY STATE CONTRACT
172 White Johnson, 496-7223, 10932 Bigge Rd Menlo Park, CA 1
213 Green Marjorie, 986-7020, 309 63rd St. Oakland, CA 2
238 Carson Cheryl, 548-7723, 589 Darwin Ln, Berkeley, CA 1
267 O‟Leary Michael 286-2428 22 Cleveland Av San Jose CA 1
274 Straight Dean 834-2919 5420 College Av Oakland CA 2

我知道我必须使用内部连接语句,但如何做到这一点并匹配与出版商居住在同一城市的作者是让我感到困惑的地方。

SELECT a.*
FROM Authors AS a
JOIN (SELECT DISTINCT city, state
      FROM Publishers) AS p
ON a.city = p.city AND a.state = p.state

DISTINCT防止它在作者所在的城市有多个出版商的情况下为作者生成多个结果。

您也可以使用相关的子查询来执行此操作:

SELECT *
FROM Authors AS a
WHERE EXISTS (SELECT *
              FROM Publishers AS p
              WHERE p.city = a.city AND p.state = a.state)