3

我正在努力理解基本的 MySQL 连接。

基本上我有 2 个表,其中一个带有客户名字和地址 ID,另一个带有实际地址。

我希望它显示客户姓名和实际地址,而不仅仅是显示客户姓名和地址 ID。

我的基本选择语句是这样的:

SELECT firstName, addressId FROM Customer

它将显示如下内容:

firstName   addressId
---------------------
Bob         56

而不是我想将 addressId 与另一个表中的实际地址连接起来

像这样:

firstName    address
----------------------------------
Bob          45 Somewhere street

有没有人可以向我展示实现这一目标的最佳方法?

也有人可以推荐一个很好的加入教程吗?

4

6 回答 6

4
SELECT  a.name, b.address
FROM    Customer a INNER JOIN AddressList b on a.addressID = b.addressID

要了解有关联接的更多信息,请参阅下面的文章,

于 2013-01-03T12:14:13.057 回答
3

你的条件是inner join,这是最简单,最容易理解的Join,也是最常见的。此查询将返回左表(客户)中与右表(地址)中具有匹配记录的所有记录。这个Join是这样写的:

 SELECT firstName, address FROM Customer 
 INNER JOIN address ON Customer.addressId=address.addressId

SQL_LIVE_DEMO

样本输出:

FIRSTNAME       ADDRESS
  Bob       45 Somewhere street
于 2013-01-03T12:13:46.830 回答
0

在名称和地址表中放入相同的“addressid”,然后将两者连接为:

select name, address from customer join addresses 
on customer.addressid = addresses.addressid;
于 2013-01-03T12:14:04.180 回答
0

假设两个表都有一个地址 id,你可以使用

SELECT firstname, address, from table1 JOIN table2 
ON table1.addressid = table2.addressid
于 2013-01-03T12:15:29.670 回答
0

这将是:

SELECT firstName, address FROM Address As A 
INNER JOIN Customer as C ON C.addressId=A.addressId

JOINS 的可视化表示

于 2013-01-03T12:16:19.720 回答
0

假设您有以下表格:

Customer(ID, FName, LName, AddressID)
Address(AddressID, Streeet, HNUmber, City)

这将显示客户地址而不是 AddressID:

SELECT c.ID, c.Fname, c.LName, a.Street, a.HNumber, a.City
FROM Customer c, Address a
WHERE
  c.AddressID = a.AddressID
于 2013-01-03T12:16:32.080 回答