【问题标题】:MySql: extracting distinct entries from three different columns of same tableMySql:从同一张表的三个不同列中提取不同的条目
【发布时间】:2011-11-05 19:30:04
【问题描述】:

我有一个名为deals 的表,其中存储了client_id1client_id2client_id3

这些 id 对应于具有 clientNameclient_id 字段的 clients 表。

如何创建一个名称的字符串数组,其 id 存在于表交易的三列中的任何一列中。

【问题讨论】:

  • 你或许应该考虑规范化你的数据。

标签: mysql join distinct


【解决方案1】:
SELECT GROUP_CONCAT(Client) FROM (
 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id1 = clients.client_id
UNION ALL
 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id2 = clients.client_id
UNION ALL
 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id3 = clients.client_id)
GROUP BY Client

解释:

从一张表中获取客户端:

 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id1 = clients.client_id

联合也会从其他表中获取它们

 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id1 = clients.client_id
UNION ALL
 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id2 = clients.client_id
UNION ALL
 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id3 = clients.client_id)

现在要获取逗号分隔字符串,要么执行此客户端 (php),要么让 MySQL 服务器执行此操作,使用 GROUP_CONCAT

SELECT GROUP_CONCAT(Client) FROM (
 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id1 = clients.client_id
UNION ALL
 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id2 = clients.client_id
UNION ALL
 SELECT clientName as Client 
 FROM deals JOIN clients
 ON deals.client_id3 = clients.client_id)
GROUP BY Client

【讨论】:

    猜你喜欢
    • 2013-04-18
    • 1970-01-01
    • 2021-07-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多