[英]Converting complex SQL to JOIN
我有以下SQL語句。 哪個工作正常。 除非在某些情況下,查詢的處理需要大量時間,否則會導致系統超時。 因此,我需要轉換該語句。 可能與JOIN。
我不知道如何轉換此語句:
SELECT table1.id as id,
table1.firstname,
table1.lastname,
table3.name,
table4.name
FROM table1, table2, table3, table4, table5
WHERE table1.id = table2.tabel1id
AND table2.table2id = table3.table2id
AND table3.table3id = table5.table3id
AND table5.somecode = '5'
AND table3.table3id = table4.name
AND table1.firstname LIKE '%John%'
GROUP BY table1.id
ORDER BY table3.name, table1.firstname, table1.lastname
我有表的嵌套,我也想在最終的SELECT(table3.name和table4.name)中使用子查詢的結果
您已經有JOIN,但是使用隱式版本(WROME中的逗號分隔表列表加上WHERE中的聯接條件)而不是顯式版本(JOIN加ON)。
因此,重寫不應提高性能(否則MySQL比我想象的要糟糕得多)。
您最好檢查是否創建了所有必要的索引。
SELECT table1.id as id,
table1.firstname,
table1.lastname,
table3.name,
table4.name
FROM table1 INNER JOIN table2
ON table1.id = table2.tabel1id
INNER JOIN table3
ON table2.table2id = table3.table2id
INNER JOIN table4
ON table3.table3id = table4.name
INNER JOIN table5
ON table3.table3id = table5.table3id
WHERE
table5.somecode = '5'
AND table1.firstname LIKE '%John%'
GROUP BY table1.id as id,
table1.firstname,
table1.lastname,
table3.name,
table4.name
ORDER BY table3.name, table1.firstname, table1.lastname
在這里閱讀有關sql server JOIN語法的更多信息
select t1.id,t1.firstname,t3.name,t4.name
from table1 as t1
inner join table2 as t2 on t1.id=t2.tabel1id
inner join on table3 as t3 on t2.table2id=t3.table2id
inner join on table4 as t4 on t3.table3id=t4.name
inner join on table5 as t5 on t5.table3id=table3.table3id
where t1.firstname like '%John%' and t5.somecode='5'
group by t1.id
order by t3.name,t1.firstname,t1.lastname
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.