我在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
答案 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
将始终是具有“较小”(即,字母顺序较早)名称的表。
如果可以有三个或更多相同的行,这仍然有效,但会返回多个匹配项。例如,如果A
,B
和C
都是其他相同行中的名称,那么您将得到:
A B
B C
A C