MySQL:使用单个列在单行中显示为多个select列
考虑这些示例表 表1中的E_id是主键。From和Assign_to是使用E_id引用的外键 我想展示这样一张表:MySQL:使用单个列在单行中显示为多个select列,mysql,sql,Mysql,Sql,考虑这些示例表 表1中的E_id是主键。From和Assign_to是使用E_id引用的外键 我想展示这样一张表: 我不知道如何实施它。请共享返回所需表的SQL查询。您可以将连接到表1两次: SELECT t2.work_name, t1f.E_name AS `From`, t1a.E_Name AS `Assign_to` FROM Table2 t2 INNER JOIN Table1 t1f ON t1f.E_id = t2.`from` INNER
我不知道如何实施它。请共享返回所需表的SQL查询。您可以将
连接到表1
两次:
SELECT
t2.work_name,
t1f.E_name AS `From`,
t1a.E_Name AS `Assign_to`
FROM Table2 t2
INNER JOIN Table1 t1f
ON t1f.E_id = t2.`from`
INNER JOIN Table1 t1a
ON t1a.E_id =t2.Assign_to
你可以用一个简单的临时表来解决这个问题。这不是解决问题的最复杂的方法,但解决方法很容易理解
步骤如下:
- 使用表2中的所有数据创建一个表
- 向该表添加两列以存储from和Assign_的名称值
- 使用表1中的名称值更新列
- 选择您的数据
MySQL代码
-- create temp-table
CREATE TABLE table2_temp
SELECT * FROM table2;
-- add columns to enrich table with E_name from table1
ALTER TABLE table2_temp
ADD COLUMN E_name_from VARCHAR (125),
ADD COLUMN E_name_assign_to VARCHAR (125);
-- update temp-table with names from table1
-- for E_name_from
UPDATE table2_temp A
INNER JOIN table1 B ON (A.`from` = E_id)
SET A.E_name_from = B.E_name;
-- for E_name_assign_to
UPDATE table2_temp A
INNER JOIN table1.B ON (A.Assign_to = E_id)
SET A.E_name_assign_to = B.E_name;
-- now you can select your date from the temp-table
SELECT
work_name,
E_name_from AS `From`,
E_name_assign_to AS `Assign_to`
FROM
table2_temp;
-- drop table after work is done
drop table if exists table2_temp ;
我们应该如何知道返回哪些工作名称,例如,Reading来自无处。