我的SQL table1在列Type中的值为'value1'。然后我在名称'value1'列中有第二个表table2。
在名为“value1”的行的table2中(此表中的唯一数据),还有更多列:color - > 'red',icon - > 'checkmark',输入 - > “东西”。如何连接查询以将连接表中的值放到主表中?我搜索过它,但我没有找到这种类型的加入。
我想从table table1中选择+ table2中的数据
谢谢!
答案 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'
我希望它有所帮助。