假设我有两个 SQL 表:Customers 和 PhoneNumbers。
假设 Customers 有以下列:customerId(主键)、fName、lName。
假设 PhoneNumbers 具有以下列:phoneNumberId(主键)、phoneNumber、customerId(外键)。
到目前为止我的理解是,如果每个客户都有一个电话号码,我可以使用以下 SQL 来选择每个客户的 fName、lName 和phoneNumber:
SELECT
customer.fName, customer.lName, phone.phoneNumber
FROM
Customers customer
INNER JOIN phoneNumbers phone ON
customer.customerId = phone.customerId
如果一位客户可能有多个电话号码怎么办?如何获取客户列表以及每个客户的电话号码列表?
我驱动 SQL 的编程语言是 C#/.NET。
最佳答案
正如您所说,如果每个客户只有一个电话号码,您的查询就会起作用。
拥有多个电话号码的客户也将被返回,但对于每个不同的电话号码,客户记录都会重复。
您需要考虑的另一个条件是没有电话号码的客户。如果您对表进行 INNER JOIN,则这些客户将从结果集中排除。要包含此类客户,您需要使用 OUTER JOIN。
关于c# - SQL 从两个表中选择数据(一行 -> 多行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4399496/