从 table 获得其他 table 没有的结果

get results from table which other table does not have

我正在尝试比较两个数组:

First array

$query = $db->prepare("SELECT vraagnummer FROM insertquestion");
$query->execute();
$fetch_query = $query->fetchAll(PDO::FETCH_ASSOC);

Second array

$query = $db->prepare("SELECT vraagnummer FROM vraag");
$query->execute();
$fetch_query_exists = $query->fetchAll(PDO::FETCH_ASSOC);

我想收到 $fetch_query 的所有结果,但 fetch_query_exists

中的结果除外

我尝试使用:

$result=array_diff($fetch_query ,$fetch_query_exists );

但是没有显示任何结果,只是一个空数组。

那么如何获取 fetch_query 的结果,不包括 fetch_query_exists 中存在的结果?

您可以在单个查询中使用 NOT IN

SELECT vraagnummer FROM insertquestion
  WHERE vraagnummer NOT IN(SELECT vraagnummer FROM vraag)

也许是,但不确定:

$query = $db->prepare("SELECT vraagnummer FROM insertquestion RIGHT JOIN vraag ON insertquestion.vraagnummer = vraag.vraagnummer");
$query->execute();
$fetch_query = $query->fetchAll(PDO::FETCH_ASSOC);

如果您不想使用单个查询,请使用此查询:

$result = array_diff_assoc($fetch_query , $fetch_query_exists );

除了@Saty 的回答之外,我相信以下内容在没有子选择的情况下也可以解决问题。

SELECT i.vraagnummber 
FROM insertquestion i 
LEFT JOIN vraag v
    ON v.vraagnummer = i.vraagnummer
WHERE v.vraagnummer IS NULL;