我可以从两行中获取结果并将它们合并为一行吗?

时间:2009-08-17 21:56:38

标签: mysql

我在mysql数据库中有2行数据。除一列外,两行都相同。我正在寻找的是一个查询,它将产生一个具有不同值的行。有人可以帮帮我吗?

数据的一个例子是:

1    Administrator    Test    2009-08-17 03:57:35
1    Miller           Test    2009-08-17 03:57:35

我需要的是:

1    Administrator    Miller    Test    2009-08-17 03:57:35

DISTINCT不会给我。我需要添加添加附加列或附加到结果集。


这是我尝试使用的代码。

SELECT
t2.msg_id,
t3.lname AS sender,
t4.lname AS recipient
FROM
mail_message AS t1
Inner Join mailbox AS t2 ON t1.msg_seq = t2.msg_seq
Inner Join employee AS t3 ON t3.employee_id = t2.employee_id
INNER JOIN employee AS t4 ON t3.employee_id = t4.employee_id

1 个答案:

答案 0 :(得分:4)

不确定。你可以JOIN将表格放到自己的副本上,使用类似这样的技术:

SELECT t1.*, t2.name
FROM the_table AS t1
INNER JOIN the_table AS t2 ON (t1.id = t2.id AND t1.test = t2.test AND t1.date_column = t2.date_column AND t1.name < t2.name)

这里我们任意命名表t1和另一个t2的一个副本,并加入除名称之外相同的行。

请注意,我不会只对!=进行name测试,因为这样会产生两个匹配的行:Administrator位于t1的一行Administrator位于t2的其他位置。为了区分一个相同的表,我断言t1将始终是具有“较小”(即,字母顺序较早)名称的表。

如果可以有三个或更多相同的行,这仍然有效,但会返回多个匹配项。例如,如果ABC都是其他相同行中的名称,那么您将得到:

A B
B C
A C