从1列写2列

时间:2014-05-01 15:06:21

标签: php mysql sql

我有一张桌子

Registration
╔══════╦══════════════╦══════════════╦═══════════════╗  
║name1 ║   name2      ║ name2's state║   entity_id   ║
╠══════╬══════════════╬══════════════╣═══════════════╣
║  1   ║     92       ║   complete   ║     152       ║
║  92  ║     1        ║   pending    ║     153       ║
╚══════╩══════════════╩══════════════╩═══════════════╝

是否可以将行的name2状态替换为" name1' s州"?我的意思是状态1 - > 92是"完成"我知道状态92 ---> 1是"等待"问题是如何在my_table中的一行中显示相同的信息?有可能吗?

my_table
╔══════╦══════════════╦═══════════════╦═══════════════╦═══════════════╗  
║name1 ║     name2    ║ name2's state ║ name1's state ║   entity_id   ║
╠══════╬══════════════╬═══════════════╣═══════════════╣═══════════════╣
║  1   ║     92       ║   complete    ║  pending      ║     152       ║
║  92  ║     1        ║   pending     ║  complete     ║     153       ║
╚══════╩══════════════╩═══════════════╩═══════════════╩═══════════════╝

1 个答案:

答案 0 :(得分:2)

你想要做的是这样的事情

SELECT
 t1.name1,
 t1.name2,
 t1.name2state as name1state,
 t2.name2state as name2state,
 t1.entity_id
FROM
 names t1
JOIN
 names t2
ON
 t1.name2 = t2.name1;
ORDER BY
 t1.name1;

这是一个你可以玩的SQL小提琴。

http://sqlfiddle.com/#!2/79222/4

当然,这只是为您提供所要求的数据和加入的示例,您需要应用此功能,并可能以适合您需求的方式对其进行更改。

修改

标准连接的

JOIN关键字,此JOIN子句仅显示ON语句为真的记录。 ON子句表示正在为JOIN比较哪两列。 所以在上面的SQL语句中你要表示你希望{1}将表1中具有表2 JOINED 的数据放到表1上,其中TABLE1的列SELECT = TABLE2的列{{ 1}}。您可以使用许多其他类型的JOIN来操作该数据。查看此Stackoverflow线程,以查看可以使用的所有JOIN类型以及它们的用途。

What's the difference between INNER JOIN, LEFT JOIN, RIGHT JOIN and FULL JOIN?