将多个值连接到虚拟列

时间:2015-06-09 08:02:53

标签: mysql sql join

我的SQL table1在列Type中的值为'value1'。然后我在名称'value1'列中有第二个表table2。

在名为“value1”的行的table2中(此表中的唯一数据),还有更多列:color - > 'red',icon - > 'checkmark',输入 - > “东西”。如何连接查询以将连接表中的值放到主表中?我搜索过它,但我没有找到这种类型的加入。

我想从table table1中选择+ table2中的数据

谢谢!

1 个答案:

答案 0 :(得分:1)

以下是您的用例示例。 首先建立你的结构(如在任务描述中):

CREATE TABLE table1(
  type varchar(20)
);

CREATE TABLE table2(
  name varchar(20),
  color varchar(20),
  icon varchar(20),
  type varchar(20)
);

然后插入一些样本数据:

INSERT INTO table1 VALUES ('value1');
INSERT INTO table1 VALUES ('value2');

INSERT INTO table2 VALUES ('value1','red','home','type1');
INSERT INTO table2 VALUES ('value1','blue','faq','type2');
INSERT INTO table2 VALUES ('value2','green','disclaimer','type3');

现在你的连接语句用于插入数据(在我的例子中只是table2的类型):

INSERT INTO table1
SELECT t2.type FROM
table1 t1
INNER JOIN table2 t2 ON t1.type = t2.name
WHERE t1.type = 'value1'

您可以更改用例的Where子句,以将不同类型的table2插入table1。

如果只想显示table2中的附加数据,那么你必须建立一个联合:

SELECT DISTINCT(result.outColumn) FROM 
(
SELECT tab1.type AS outColumn FROM table1 AS tab1
UNION ALL
 SELECT t2.type AS outColumn FROM
    table1 t1
    INNER JOIN table2 t2 ON t1.type = t2.name
    WHERE t1.type = 'value1'
) AS result

如果您只想显示table1和table2中的大量整行数据,那么只需使用(然后获取所有列):

 SELECT * FROM
    table1 t1
    INNER JOIN table2 t2 ON t1.type = t2.name
    WHERE t1.type = 'value1'

我希望它有所帮助。