使用SQL IN语句获得更好的数据库结果
数据库让我们组织我们的生活。无论是工作还是播放,一个适当的归一化的SQL数据库会使生活更轻松。我们可以在其中的任何信息上存储,并在稍后用Gusto检索它。虽然这些数据库让我们在其中存储任何内容,但他们的权力来自SQL语言。您可以使用正确的SQL语句执行任何操作。根据您的需求,这些陈述可以易于简单地简单或不可思议地复杂。例如,如果需要检索包含某些特定信息的记录,则有两个选项。您可以将它们包含在单独的“或”命令条件中,或者您可以在语句中使用单个SQL“in”语句,以在一行中抓住它们。
sql in陈述
SQL中的语句替换具有多个或条件的需要。例如,假设您在SQL数据库中有下表。
表Store_Information.
Store_Name | 销售量 | txn_date. |
---|---|---|
洛杉矶 | 1500 | 1月05-1999 |
圣地亚哥 | 250. | 1月- 07 - 1999 |
旧金山 | 300 | 1月8日至1999年 |
波士顿 | 700 | 1月8日至1999年 |
如果您只需要记录,请说,L. A.和San Diego,您可以使用多个或陈述来获取它们。这些陈述可能会喜欢这样的东西:
SELECT * FROM Store_Information WHERE Store_Name = ' Los Angeles ' OR Store_Name = ' San Diego ';
声明没有错。如果你愿意,你可以使用它;特别是对于像这样的小桌子。但是,使用多个或陈述可能会对较大的表令人讨厌。对于具有数百个条目的表格,如果您需要的不仅仅是一些结果,您的SQL或链可以获得一本书。幸运的是,我们有SQL的声明来简化我们的SQL。
SQL IN语句将所有这些OR条件更改为具有逗号分隔的值列表的单个语句。这些值是括在圆括号中的搜索词。SQL IN语句语法如下所示:
(value1,value2,...,value_n)中的表达式
对于一个实际的例子,我们可以将我们以前的SQL语句重写为:
从stroe_information中选择*,其中stort_name('洛杉矶','san diego');
只要它所有相同的数据类型,您可以在值列表中放入值列表中的任何内容。由于您正在处理单个数据库列,因此无法混合诸如字符串和数字的数据类型。值数据类型也必须匹配列的数据类型。以下是所有数字SQL的示例。
从Order_ID中的订单中选择*(10000,0001,0003,10005)的订单;
在这些情况中的任何一个中,SQL中的语句会产生与其等同器或链相同的结果。
Store_Name | 销售量 | txn_date. |
---|---|---|
洛杉矶 | 1500 | 1月05-1999 |
圣地亚哥 | 250. | 1月- 07 - 1999 |
SQL不陈述
有时候,你会比自己想要的东西更清楚自己不想要的东西。在这种情况下,可以将关键字NOT添加到SQL IN语句中。NOT IN works与IN语句相反。它返回在值列表中不包含任何项的所有记录。例如,如果使用下面的NOT IN语句,可以得到与之前相同的结果。
从stroe_information中选择*,其中orther_name不在('boston','san francisco');
不陈述相当于一系列和不平等声明。我们可以将上述陈述写为以下示例,但为什么我们不应该如此简单!
选择*来自Store_Information,其中orther_name!='boston'和Store_name!='旧金山';
在一起使用in and and陈述
这就是在SQL查询中使用SQL IN语句及其近亲NOT IN语句所需要知道的全部内容。您只需要记住,这些语句只对一个数据库列起作用。这意味着您的值必须具有相同的数据类型,但这是惟一的限制。
您可以使用这些语句从另一个表库中检索数据。值列表中的值可以是列名而不是文字,因为我在此处完成,但这可能会得到非常复杂。最有可能的是,当您将两个或多个表与标准化数据库组合时,您将使用此方案。
例如,如果您只需要组成一个表的选择的少数记录,但是您只知道另一个表的记录,那么您可以在SQL语句中组合使用这两个表,并使用in子句来过滤生成的数据。下面的语句从表订单中提取所有记录,这些记录在供应商表中有相应的记录。
选择订单。*来自ORDERS.ID = ORDERS.SUPPIERID的ORDERS INNER INNINE加入供应商。('ibm','hewlett packard','microsoft');
最后,您可以使用多个版本的SQL IN语句来解决更复杂的任务。这使得使用具有多个条件的多个表是轻而易举的事!您只需像下面所做的那样,将每个SQL IN语句与一个逻辑运算符链接起来。
SELECT * FROM orders INNER JOIN suppliers ON suppliers。ID =订单。suppierID供应商。supplier_name NOT IN ('IBM', 'Hewlett Packard', 'Microsoft') AND order_id IN (10000, 10001, 10003, 10005);
底线
虽然您可以在数据库中存储任何您想要的信息,但它们确实有其局限性。为了克服这些限制,庞大的SQL语言为我们提供了工具,可以用一条语句将内容重新排序。当您知道需要基于某些条件的信息时,可以在SELECT语句的WHERE子句中放置尽可能多的条件语句。但是,当这些条件涉及单一类别的数据时,您可以使用SQL IN语句来减少SQL语句的长度。
SQL IN语句是包含所需信息的简单值列表。您甚至可以添加不创建不陈述的关键字,以丢弃您不想要的任何记录。在任何一种情况下,你都会喜欢SQL的声明可以为您做些什么。
特色课程
最后更新2016年8月
使用PHP, OOP, PDO, Bootstrap和AJAX |学习和构建一个功能齐全的Web应用程序的完整解决方案由Paul Amissah.
探索课程