我有一张桌子
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 ║
╚══════╩══════════════╩═══════════════╩═══════════════╩═══════════════╝
答案 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?