我有两个表,我希望通过其type
字段进行链接。
表1
id | type
---+--------
1 | One
2 | Two
3 | Three
4 | Four
5 | Two
表2
id | type
---+------
34 | N
35 | Z
26 | Y
27 | W
等效表是(此表不存在且不存在)
One = Z
Two = Y
Three = N
Four = W
我的查询是
SELECT t1.type
FROM table1 t1, table2 t2
WHERE t1.type = t2.type
可能最好的解决方案是更改其中一个表格中的信息。但我不能这样做,我也无法创建任何商店程序。 我想只有一个查询来执行此操作。
有什么想法吗?
答案 0 :(得分:4)
您可以在查询中合成关系表:
SELECT t1.id AS id1, t1.type, t2.id AS id2
FROM table1 AS t1
JOIN (
SELECT 'One' AS `long`, 'Z' AS short
UNION ALL
SELECT 'Two', 'Y'
UNION ALL
SELECT 'Three', 'N'
UNION ALL
SELECT 'Four', 'W'
) AS r ON t1.type = r.long
JOIN table2 AS t2 ON t2.type = r.short
答案 1 :(得分:0)
可能最好的解决方案是更改其中一个表格中的信息。但我不能那样做,我也无法创建任何商店程序。我想只有一个查询来执行此操作。
您不一定要更改两个表中的一个表中的信息。您可以创建一个表,其中包含两种类型之间的关系,即:
<强>表3 强>
type1 | type2
------+------
One | Z
Two | Y
Three | N
Four | W
然后你可以这样写一个查询:
SELECT table1.type
FROM table1
JOIN table3
ON table1.type = table3.type1
JOIN table2
ON table3.type2 = table2.type