sql - 排除结果集的结果,其中表值等于
我正在研究一个小应用程序,该程序允许我根据某些条件(如公司级别,付款,项目状态等)来跟踪我的工作优先级。sql - 排除结果集的结果,其中表值等于
我有一个页面向我显示所有公司及其分类(如上所述)的分类。
举个例子,来拉我的所有普通待办事项,我这样做:
$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家公司的普通Todos,其中一家公司被称为“公司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中完成,我一直都在寻找了一圈,发现NOT IN和NOT EXIST
,但它只是不工作,我有一个烂摊子......
编辑***
这些都是2瓦特ays按照以下答复进行了尝试,虽然我没有得到任何错误,但“公司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;”;
任何想法,我怎么能合并一个NOT IN/NOT上面我的查询存在吗?
你可以使用不操作<>
SELECT pub_name,country,pub_city,estd
FROM publisher
WHERE country <>"USA";
这会拉低所有的出版商没有从美国。
嗨安东尼。我走了进去,把它放在这样的://// $ pullAllGeneralTodosDone =“选择*从to_dos到哪里to_do_is_for ='$ login_usrname'AND is_to_do_complete ='no'AND company_to_do ='一般工作'和company_to_do '公司A'order by company_to_do ASC;'; \\\\并且它不起作用,我没有得到任何错误或任何东西,但公司A仍然显示任何想法?谢谢先进的 – somdow 2014-12-05 19:37:38
我很确定不是你的答案,如果你想简洁。值,虽然已经被连接起来并放在括号:
$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 =“SELECT * FROM to_dos WHERE to_do_is_for ='$ login_usrname'AND is_to_do_complete ='no'AND company_to_do ='一般工作'和company_to_do不在('COMPANY A')order by company_to_do ASC;”; \\\。再一次,它没有抛出任何错误,但“公司A”仍然显示。有任何想法吗? – somdow 2014-12-05 19:26:21
除了检查运算符优先级的文档(或者只是简短地尝试并尝试一些不同的括号分组),否;无论如何,不是没有一个样本数据集来测试。 – 2014-12-05 19:28:49
请试试这个:
$ pullAllGeneralTodosDone = “SELECT * FROM to_dos WHERE to_do_is_for =“” $ login_usrname。“” AND is_to_do_complete = '不',company_to_do = '一般到-DO' AND company_to_do <> '数字白板' ORDER BY company_to_do ASC;”;?
问候, 塔伦
您应该使用[Markdown](http://stackoverflow.com/editing-help)来提高答案的可读性。 – 2014-12-06 13:22:02
为什么向下票 – somdow 2014-12-04 20:04:39