MySQL从订单ID获取客户名称
如果有两个表,我需要订单ID中的客户名称 客户:MySQL从订单ID获取客户名称,mysql,sql,join,Mysql,Sql,Join,如果有两个表,我需要订单ID中的客户名称 客户: ID Name 1 Jamal Wang 2 Omar Jan 订单: ╔═══════╦══════════╦═══════╗ ║ ID ║ CUSTOMER ║ VALUE ║ ╠═══════╬══════════╬═══════╣ ║ 34656 ║ 1 ║ 20 ║ ║ 37345 ║ 2 ║ 25 ║ ║ 38220 ║ 1 ║ 15 ║
ID Name
1 Jamal Wang
2 Omar Jan
订单:
╔═══════╦══════════╦═══════╗
║ ID ║ CUSTOMER ║ VALUE ║
╠═══════╬══════════╬═══════╣
║ 34656 ║ 1 ║ 20 ║
║ 37345 ║ 2 ║ 25 ║
║ 38220 ║ 1 ║ 15 ║
║ 39496 ║ 1 ║ 38 ║
║ 41752 ║ 1 ║ 9 ║
║ 43734 ║ 2 ║ 20 ║
当我从“订单”中获得客户ID时,我想获取客户名称
SELECT Name FROM `Customer`
INNER JOIN `Order`
ON Customer.id = Order.customer.
WHERE Customer.id=1
但它返回相同的客户4次,因为我有4个订单。
我怎样才能使它不返回基于订单的客户,而是基于客户。
我需要订单ID中的客户名称。
请提供帮助。如果您已经拥有客户ID,则无需加入“订单”表。只需使用简单的选择:
SELECT Name FROM `Customer`
WHERE ID=1
如果希望根据订单ID获取客户名称,则只应使用join。如前所述,在这个特定查询中,您根本不需要订单表 但是,如果希望保留现有查询,并且只获取一次名称(这是您的问题),则只需将DISTINCT关键字添加到现有查询:
SELECT DISTINCT name
FROM customer
INNER JOIN order ON customer.id = order.customer
WHERE customer.id = 1;
这里有一个例子。就两次?这应该会返回4次。当你有客户id并且需要客户名称时,为什么要加入“订单”。您不需要orders表中的任何内容。您应该修改筛选器:SELECT*from Customer INNER JOIN Order ON Customer.ID=Order.Customer WHERE Order.ID=37345这会给您一行,当然会给您4次,因为Customer 1有4个订单。如果您希望它只显示一次,请使用{SELECT distinct}为什么会有人对此投反对票?我对他们提出的问题给出了有效的答案。