好的,我在MySQL中有两个表。一个表保存客户信息,另一个表保存电话号码。我需要在一个查询中加入这些表,从电话表中选择最多两个电话号码以及客户信息。现在我的查询是:
SELECT customers.name, phones.phone, phones2.phone
FROM customers
LEFT JOIN phones ON phones.customerid=customers.id
LEFT JOIN phones AS phones2 ON phones2.customerid=customers.id
GROUP BY customers.id;
然而,这会为手机1和手机2返回相同的电话号码。基本上我需要做的是将手机2偏移1,但我不知道如何在语法上做到这一点。
手机在一个单独的表中,因为它是一对多的关系。
我需要将它放在一个查询中,因为我将它直接导出到csv。
非常感谢帮助。提前谢谢。
答案 0 :(得分:3)
您只想为每位客户提供0,1或2个电话号码吗?如果是Max
和Min
好吗?这将为您节省一次加入。
SELECT customers.name,
MAX(phones.phone) AS phone,
CASE WHEN MAX(phones.phone) = MIN(phones.phone) THEN NULL ELSE MIN(phones.phone) END AS phone2
FROM customers
LEFT JOIN phones ON phones.customerid=customers.id
GROUP BY customers.id;
答案 1 :(得分:1)
为避免两次获得相同的电话号码,您可以更改此信息:
LEFT JOIN phones AS phones2 ON phones2.customerid=customers.id
对此:
LEFT JOIN phones AS phones2 ON phones2.customerid=customers.id
AND phones2.phone <> phones.phone
答案 2 :(得分:1)
你想要的是删除数字相同的情况。
SELECT customers.name, phones.phone, phones2.phone
FROM customers
LEFT JOIN phones ON phones.customerid=customers.id
LEFT JOIN phones AS phones2 ON phones2.customerid=customers.id
WHERE phones2.phone != phones.phone
GROUP BY customers.id