我必须从两个SQL表中获取数据,但我不确定要使用哪个连接,并且相同的表具有相同的customers_id
表,我将使用内连接吗?
table - customers
customers_id
customers_firstname
customers_lastname
customers_email_address
table - orders
customers_id
customers_street_address
customers_suburb
customers_city
customers_postcode
customers_state
customers_country
答案 0 :(得分:1)
这取决于你想要的结果。如果您想要客户中的每条记录,无论订单中是否有匹配的记录,您都会使用LEFT OUTER JOIN
。如果不是,您将使用INNER JOIN
。 This is the article我通常会引用人们来获取连接的基本解释。
INNER JOIN
看起来像这样:
SELECT c.customers_id,
c.customers_firstname,
c.customers_lastname,
o.customers_street_address,
o.customers_city,
o.customers_postcode,
o.customers_state
FROM customers as c
INNER JOIN orders as o
ON c.customers_id = o.customers_id
我故意不做select *
。尝试养成只从表中选择所需列而不是一切的习惯。
答案 1 :(得分:0)
INNER JOIN Ya你可以使用它。
你可以写下面的查询来从两个表中获取你的所有数据。我要为你写完整的联接查询。
select customers.customers_firstname,
customers.customer_lastname,
orders.customers_city
from customers
INNER JOIN orders
ON customer.customers_id = orders.customers_id
答案 2 :(得分:0)
您应该使用的联接取决于您尝试保留的信息,具体取决于客户ID。如果您希望保留customers
中的所有信息,即使与orders
不匹配,您也会使用left join。相反,如果您希望保留orders
中的所有信息,即使与customers
不匹配,您也会使用right join。
如果要返回所有信息,并组合匹配的行,请使用full join。最后,如果仅希望从任一表中获得匹配的行,则可以使用inner join。
答案 3 :(得分:0)
相同的表具有相同的
customers_id
表
我认为您的意思是说他们有一个共同的列,customers_id
,在这种情况下您可以使用NATURAL JOIN
。