从表值等于某值的结果集中排除结果


exclude result from result set where a table value equals something

我正在开发一个小应用程序,它允许我根据某些标准(例如公司级别,支付的金额,项目状态等(跟踪我的工作优先级。

有一个页面,根据类别向我显示所有公司及其细分(如上所述(。

举个例子,为了拉出我所有的常规待办事项,我做了这样的事情:

$pullAllGeneralTodosDone = "SELECT * FROM to_dos WHERE to_do_is_for = '$login_usrname' AND is_to_do_complete = 'no' AND company_to_do = 'COMPANY NAME HERE' ORDER BY company_to_do ASC;";

综上所述,假设我在数据库中有 10 家公司的一般待办事项,那么这拉动了所有 10 家公司。

现在我想

做的是,提取相同的数据,除了现在,我想排除返回的任何包含特定公司名称的值。

因此,例如,如果我有 10 家公司的一般待办事项,其中一家公司称为"公司 A",那么我希望上面的查询排除公司 A,导致我的页面上显示 9 个条目。

我打算做一些黑客活动,比如[伪代码]

<?php
if ( $row['company_to_do'] == 'COMPANY A' ) { 
?>
code here with some css class that gets hidden because its COMPANY A which i dont want to see.
<?php } ?>

但这太乱了...我知道它可以在 sql 中完成,我一直在环顾四周,发现不在,也不存在

但它就是不行,我一团糟...

编辑***

这是我根据以下回复尝试的两种方法,尽管我没有收到任何错误,但"公司 A"仍然与其他信息一起显示。

我试过:

$pullAllGeneralTodosDone = "SELECT * FROM to_dos WHERE to_do_is_for = '$login_usrname' AND is_to_do_complete = 'no' AND company_to_do = 'GENERAL TO-DO' AND  company_to_do <> 'COMPANY A' ORDER BY company_to_do ASC;”;

$pullAllGeneralTodosDone = "SELECT * FROM to_dos WHERE to_do_is_for = '$login_usrname' AND is_to_do_complete = 'no' AND company_to_do = 'GENERAL TO-DO' AND  company_to_do NOT IN ('COMPANY A') ORDER BY company_to_do ASC;”;

关于如何将"不在/不存在"与上面的查询合并的任何想法?

>您可以使用 is not 运算符<>

SELECT pub_name,country,pub_city,estd   
FROM publisher   
WHERE country <>"USA";  

这将吸引所有非美国的出版商。

如果你想要简洁,我很确定不是IN是你的答案。 但是,这些值必须连接并放在括号中:

$pullAllGeneralTodosDone = "SELECT * FROM to_dos WHERE to_do_is_for
= '$login_usrname' AND is_to_do_complete = 'no' AND company_to_do 
= 'COMPANY NAME HERE' AND  company_to_do NOT IN 
('COMPANY A','FOOBAR WIDGETS, LLC','MICROSOFT CORPORATION') 
ORDER BY company_to_do ASC;";

问题是串联和参数,而且如果您有大型数据集或大量排除项,这可能会使事情陷入困境。

请尝试以下操作:

$pullAllGeneralTodosDone = "从to_dos中选择 *,其中 to_do_is_for = '".$login_usrname。is_to_do_complete='否',company_to_do='一般待办事项',company_to_do <>按ASC company_to_do顺序排列'数字白板';";

问候塔伦