我有以下查询:
SELECT PKID, QuestionText, Type
FROM Questions
WHERE PKID IN (
SELECT FirstQuestion
FROM Batch
WHERE BatchNumber IN (
SELECT BatchNumber
FROM User
WHERE RandomString = '$key'
)
)
我听说子查询效率低下,首选连接。但是,我找不到任何解释如何将 3+ 层子查询转换为连接表示法的内容,并且无法理解它。
谁能解释一下怎么做?
最佳答案
SELECT DISTINCT a.*
FROM Questions a
INNER JOIN Batch b
ON a.PKID = b.FirstQuestion
INNER JOIN User c
ON b.BatchNumber = c.BatchNumber
WHERE c.RandomString = '$key'
之所以指定DISTINCT
,是因为可能有行与其他表上的多行匹配,导致结果重复记录。但是由于您只对表 Questions
上的记录感兴趣,因此 DISTINCT
关键字就足够了。
要进一步了解有关联接的更多信息,请访问以下链接:
关于mysql - 在 MySQL 中用连接替换子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15091212/