gpt4 book ai didi

mysql - 如何显示Where 子句排除的值?

转载 作者:行者123 更新时间:2023-11-29 10:12:36 25 4
gpt4 key购买 nike

我正在尝试弄清楚如何显示从此 WHERE 子句中排除的所有值,而不是显示通过以下方式选择的值:

    $pdo = $service->pdo;
$sql = "SELECT a.id, a.name, a.surname, a.job, b.start_date, b.end_date
FROM table1 a
INNER JOIN table2 b on b.id = a.id
WHERE a.job = '{$job}'
AND
STR_TO_DATE(b.`start_date`, '%d-%m-%Y') = '{$date}'
GROUP BY a.id ";
return $pdo->query($sql)->fetchAll(PDO::FETCH_OBJ);

此查询返回的是首先匹配“工作标题”的值,然后是表 2 中该日期存在的值。我试图显示的是基于“工作标题”的所有其他值,不包括这些值该特定日期存在的值。基本上我需要弄清楚如何根据此查询知道谁在特定日期有空。

感谢您的帮助

最佳答案

您可以修改查询并设置反向 where 子句,如下所示,您将得到与“工作标题”不匹配的行或(这很重要)与 table2 中的日期要求不匹配的行:

    $pdo = $service->pdo;
$sql = "SELECT a.id, a.name, a.surname, a.job, b.start_date, b.end_date
FROM table1 a
INNER JOIN table2 b on b.id = a.id
WHERE a.job <> '{$job}'
OR
STR_TO_DATE(b.`start_date`, '%d-%m-%Y') <> '{$date}'
GROUP BY a.id ";
return $pdo->query($sql)->fetchAll(PDO::FETCH_OBJ);

编辑

阅读您的评论后,我发现您不需要查询已删除的 roes,您需要与第一个要求匹配但与第二个要求不匹配的行。所以你需要这样:

    $pdo = $service->pdo;
$sql = "SELECT a.id, a.name, a.surname, a.job, b.start_date, b.end_date
FROM table1 a
INNER JOIN table2 b on b.id = a.id
WHERE a.job = '{$job}'
AND
STR_TO_DATE(b.`start_date`, '%d-%m-%Y') <> '{$date}'
GROUP BY a.id ";
return $pdo->query($sql)->fetchAll(PDO::FETCH_OBJ);

关于mysql - 如何显示Where 子句排除的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50695243/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com