我想获取数据表单 mysql table 其中数据是否与右侧匹配

I want to get the data form form mysql table where data match with right side or not

SELECT a.*,b.clientId,c.partner_name, d.seo 
FROM project_estimate_detail as a,
    project as b,
    partner as c,
    projection as d 
WHERE a.project_cat_id = 5 and 
      a.project_id = b.id and 
      b.clientId = c.id and 
      c.status =1 and c.id = d.client_id 
GROUP BY(c.partner_name)

in c.id = d.client_id .. 我想要匹配或不匹配 d.client_id

的所有行形式 c.id

如果我没猜错,您想通过一个公共属性 ID 连接多个表。在我看来,您应该使用 LEFT JOIN。http://www.w3schools.com/sql/sql_join_left.asp

在此处查看 JOINS 之间的区别,然后决定哪种更适合您:

http://www.codeproject.com/Articles/33052/Visual-Representation-of-SQL-Joins

使用 LEFT OUTER JOIN。

但要做到这一点,您应该改为使用显式连接语法:-

SELECT a.*, b.clientId, c.partner_name, d.seo 
FROM project_estimate_detail as a,
INNER JOIN project as b ON a.project_id = b.id
INNER JOIN partner as c ON b.clientId = c.id
LEFT OUTER JOIN projection as d ON c.id = d.client_id 
WHERE a.project_cat_id = 5 
AND c.status =1 
GROUP BY(c.partner_name)

请注意,我怀疑这不会给您想要的结果。您按 _partner_name_ 分组,因此每个 partner_name 将返回一行。因为我假设一个合作伙伴名称将有多个客户,并且他们可以有多个估计,您将从 _project_estimate_detail_ 和 project 中为每个 _partner_name_ 返回一行详细信息;哪些行的详细信息未确定并且可能实际上是随机的。