我想从mysql中选择一些数据。但是,我正在查询的表中存储的一些数据是在代码中,并且我需要将该数据引用到另一个表中来获取文本描述。
TABLE: persons
SELECT id, first_name, last_name, address_code, customer_type_code
FROM persons
WHERE id = 1001
TABLE: ref_address
SELECT address_name FROM ref_address
WHERE address_code = 123
TABLE: ref_customer_type_code
SELECT customer_type_name FROM ref_customer_type_code
WHERE customer_type_code = 456
如何将所有三个查询组合在一起,在一个查询中返回id,first_name,last_name,address_name,customer_type_name,而不是像这样查询它们3次?
答案 0 :(得分:0)
您正在寻找的是JOIN
。
在JOIN
中,您可以指定两个表以及它们彼此之间的关系。在单个SELECT
语句中,您可以有多个JOIN
子句。
SELECT
p.id, p.first_name, p.last_name, p.address_code, p.customer_type_code,
a.address_name,
t.customer_type_name
FROM
persons p
JOIN ref_address a
ON p.address_code = a.address_code
JOIN ref_customer_type_code t
ON p.customer_type_code = t.customer_type_code
WHERE
p.id = 1001
此查询表示表格persons
和ref_address
应与每个表格中提供的相关列address_code
相关联,或者加入#34;}。表persons
和ref_customer_type_code
由列customer_type_code
链接的表格也是如此。
答案 1 :(得分:0)
Please read the reference manual for join
简而言之,你需要在表之间定义一个关系(我使用别名只是为了让事情变得更简单,#34;更便宜"写):
select p.id, p.first_name, p.last_name, p.address_code, p.customer_type_code
, ra.address_name
, rctc.customer_type_name
from persons as p
-- Join the persons table with the ref_address table,
-- using the address_code column of each table
inner join ref_adress as ra
on p.address_code = ra.address_code
-- Join the persons table with the ref_customer_type_code table
-- using the customer_type_code column of each table
inner join ref_customer_type_code as rctc
on p.customer_type_code = rctc.customer_type_code
where p.id = 1001
请注意,在查询中使用多个表时,定义别名可能很有用,以避免必须一次又一次地写入表的全名。此外,显式指定每个字段的源表(通过别名,如果您使用它)可能是个好主意。