我必须使用一些不太理想的数据库结构。 Table1包含2个Ids(我们称之为id1,id2)。这些ID链接到另一个表Table2中的2行。我想获得Table1的一些列,并使用id1和id2来获取Table2中的列。我是否真的必须连接同一个表两次以链接到不同的行,还是有另一种更有效的方法来执行此操作?我的查询需要20秒才能超过30秒。
SELECT t1.id1, t1.id2, t2.name, t3.name
FROM Table1 t1, Table2 t2, Table2 t3
WHERE t1.id1 = t2.id AND t1.id2 = t3.id AND t1.index = 2
答案 0 :(得分:0)
未经测试,但应该可以使用JOINS:
SELECT t1.id1, t1.id2, t2.name FROM
FROM Table1 t1
JOIN Table2 t2
ON t1.id1 = t2.id OR t1.id2 = t2.id
WHERE t1.index = 2
答案 1 :(得分:0)
如果您确实需要此Many-to-Many关系,请尝试JOIN:
SELECT t2.id AS t2_id,
t3.id AS t3_id,
t2.name AS t2_name,
t3.name AS t3_name
FROM Table1 t1
JOIN Table2 t2
ON t1.id1 = t2.id
JOIN Table3 t3
ON t1.id2 = t3.id
WHERE t1.index = 2