加入两个表不确定加入使用

时间:2012-02-13 04:41:04

标签: mysql sql

我必须从两个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

4 个答案:

答案 0 :(得分:1)

这取决于你想要的结果。如果您想要客户中的每条记录,无论订单中是否有匹配的记录,您都会使用LEFT OUTER JOIN。如果不是,您将使用INNER JOINThis 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