我有以下疑问:
SELECT col1, col2, col3 FROM tb1
WHERE col4=ANY(
SELECT col1 FROM tb2
WHERE col2=(SELECT col1 FROM tb3 WHERE col3='php generated string')
AND col3=(SELECT col2 FROM tb3 WHERE col3='same string as above')
);
它能工作,但很慢。我知道有一种更好(更快)的方法可以做到这一点,但我缺乏使用SQL查询的经验,这意味着我正试图使这一点变得比需要的更难。我试过使用JOIN,但我也不知道如何在这种情况下实现它。
任何帮助都非常感谢。
最佳答案
你说得对,你需要学习如何使用JOIN
。如果您在多个表中匹配一列中的值,那么您可能应该将这些表放在一起。
SELECT tb1.col1,tb1.col2,tb1.col3
FROM tb1
JOIN tb2
ON (tb1.col4 = tb2.col1)
JOIN tb3
ON (tb1.col2 = tb3.col1
AND tb1.col3 = tb3.col2)
WHERE tb3.col3 = 'php generated string'
关于mysql - MySQL-比子查询更好的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6707805/