mysql选择多个并连接查询

mysql选择多个并连接查询,mysql,sql,select,join,Mysql,Sql,Select,Join,我这里有一个复杂的MYSQL查询问题。我尽力解释我的问题 我有四张桌子。mid是表之间的外键。表4不是强制的表源。然而,我喜欢它返回所有的行,即使表4中没有匹配的数据。因此,我编写了一个查询脚本,如下所示 我不确定编写这样的查询脚本是否合乎逻辑,但我知道语法是错误的 SELECT * FROM table1, table2, table3, (SELECT xx FROM table4 RIGHT JOIN table1 ON table1.mid = table

我这里有一个复杂的
MYSQL
查询问题。我尽力解释我的问题

我有四张桌子。mid是表之间的外键。表4不是强制的表源。然而,我喜欢它返回所有的行,即使表4中没有匹配的数据。因此,我编写了一个查询脚本,如下所示

我不确定编写这样的查询脚本是否合乎逻辑,但我知道语法是错误的

SELECT * 
FROM table1, table2, table3, 
    (SELECT xx 
    FROM table4 
    RIGHT JOIN table1 ON table1.mid = table4.mid) 
WHERE table1.mid = table2.mid 
AND table1.mid = table3.mid 
AND tt = 'a' 
AND type = 1 
GROUP BY table1.mid 
ORDER BY xx DESC, table1.name ASC;

您必须在表1和表4之间进行左连接:

SELECT * 
  FROM table1
  JOIN table2 ON table1.mid = table2.mid 
  JOIN table3 ON table1.mid = table3.mid 
  LEFT JOIN table4 ON table1.mid = table4.mid 
 WHERE tt = 'a' 
   AND type = 1 
 GROUP BY table1.mid 
 ORDER BY xx DESC, table1.name ASC;

这工作很有魅力。谢谢专家!!:)但这是唯一的方法吗?对于你的需要,这是一种方法(标准且最简单的方法)。当然,还有其他一些方法,当您使用
左连接时,它们更复杂但更无趣。