我有以下疑问:

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/

10-11 01:54