列表不在内部联接中的ID

时间:2013-12-10 16:09:38

标签: php mysql

我有一个SELECT语句,它为我提供了符合条件的相关ID和公司名称列表。以下是声明:

$result = mysqli_query($con,"SELECT a.OWNER_ID,b.ID, b.TITLE AS companyname FROM b_crm_act a INNER JOIN b_crm_company b ON a.OWNER_ID = b.ID");

while($row = mysqli_fetch_array($result))
{
echo "<tr>";
echo "<td>" . $row['ID'] . "</td>";
echo "<td>" . $row['companyname'] . "</td>";
echo "</tr>";
}
echo "</table>";

列出所有ID和公司名称。我真正需要的是b_crm_company中不在b_crm_act中的ID列表。我在想我使用NOT IN功能,但我已经尝试了这个并且它没有列出任何内容。

我们将不胜感激。

2 个答案:

答案 0 :(得分:1)

您可以在此

上使用LEFT JOIN
SELECT  a.ID, 
        a.TITLE AS companyname 
FROM    b_crm_company a 
        LEFT JOIN b_crm_act b 
            ON a.ID = b.OWNER_ID // <== specify how the tables are linked
WHERE   b.OWNER_ID IS NULL       // <== a value of NULL when it doesn't exists

不确定您的列名称,但这就是它的样子。

答案 1 :(得分:0)

我不知道这有多高效但您尝试过使用NOT IN子查询吗?

SELECT ID,title FROM b_crm_company WHERE ID NOT IN( SELECT ID FROM b_crm_company INNER JOIN b_crm_act ON b_crm_act.OWNER_ID = b_crm_company.ID )