为什么在SQL语句中 不可以对同一个属性进行逻辑“与”的等值运算

作者&投稿:银蓝 (若有异议请与网页底部的电邮联系)
SQL语句里有没有 与,或,非 等逻辑运算~

与:and;
或:or ;
至于非怎么说呢,感觉好像是没有的。不等于的话可以用;不为空的的is not null;

关于题主问题其实同属性(字段)使用与逻辑进行等值运算要讲清楚我首先弄清楚与逻辑内涵与逻辑表示逻辑运算符and两边表达式都立真至少立即假面用MySQL实验说明: 先创建物表插入狗猫两条记录 图" class="ikqb_img_alink"> 先筛选即狗猫记录(使用与逻辑)返结二 select * from animal where animal='dog' and animal='cat'; 图" class="ikqb_img_alink"> 看返空记录集物能同狗猫 跟着再看看 筛选即狗狗记录(使用与逻辑)返结三 select * from animal where animal='dog' and animal='dog'; 图" class="ikqb_img_alink"> 结返条狗记录物狗狗尽管讲啰嗦逻辑没问题记录返看吧同属性使用与逻辑等值运算种做些画蛇添足 看看 筛选狗或者猫记录(使用或逻辑)返结四 select * from animal where animal='dog' or animal='cat'; 图" class="ikqb_img_alink"> 结返两条记录要物狗或者猫筛选表猫狗都都筛选 至于自连接同属性使用与逻辑等值运算要自连接表至少取别名系统才能所区至于弄混淆连接各表记录行字段自连接数据源同张表数据库引擎实际其复制内存变内容致两张虚拟表实施连接运算例例使用自连接选t一每itemvalue值: select a.item,a.value  from t一 a where not exists( select 一 from t一 b  where b.item=a.item and b.value>a.value);

关于题主这个问题,其实对同一个属性(字段)是可以使用“与逻辑”进行等值运算的,要讲清楚这个我们首先得弄清楚“与逻辑”的内涵,“与逻辑”表示逻辑运算符“and”两边的表达式都成立为“真”,至少一个不成立即为“假”。下面用MySQL实验说明一下:

先创建“动物表”,插入狗和猫两条记录

先筛选出即是狗又是猫的记录(使用与逻辑),返回结果2

select * from animal where animal='dog' and animal='cat';

可以看到返回空记录集,因为一个动物不可能同时是“狗”和“猫”。


跟着再看看

筛选出即是狗还是狗的记录(使用与逻辑),返回结果3

select * from animal where animal='dog' and animal='dog';

结果返回一条为狗的记录,因为一个动物它是狗又是狗,尽管讲法啰嗦,但是逻辑没问题,因此有记录返回,看吧同一个属性还是可以使用“与逻辑”的等值运算的,只不过这种做法有些画蛇添足。


最后看看

筛选出是狗又或者是猫的记录(使用或逻辑),返回结果4

select * from animal where animal='dog' or animal='cat';

结果返回两条记录,因为只要动物是狗或者是猫就可以被筛选出来,表中正好猫狗都有因此都被筛选出来了。


至于自连接当然是可以对同一个属性使用“与逻辑”等值运算的,只不过要为自连接的表的至少一方取别名这样系统才能有所区分,不至于弄混淆连接各方表的记录行和字段,因为自连接的数据来源为同一张表,数据库引擎实际是将其复制到内存里变为内容一致的两张虚拟表实施连接运算。例如下例使用自连接选出t1中每个item的value最大值:

select a.item,a.value  from t1 a where not exists(

select 1 from t1 b  where b.item=a.item and b.value>a.value);



不是太明白你的意思,可以举个例子吗?


在SQL语句中,in和exist的区别是什么?
in是把外表和内表作hash连接,而exists是对外表作loop循环。确定给定的值是否与子查询或列表中的值相匹配。in在查询的时候,首先查询子查询的表,然后将内表和外表做一个笛卡尔积,然后按照条件进行筛选。所以相对内表比较小的时候,in的速度较快。具体sql语句如下:1 SELECT 2 * 3 FROM 4 `...

教你如何在MySQL命令行中使用SQL语句的规则
例如,以大写字母的形式写保留关键字,以小写字母的形式写表或列名, SQL语句也会看起来一目了然。另外,根据使用的数据库的不同,有的数据库中是区分表或列名的大小写的。规则3: 可自由地加入空白或换行符在SQL语句的中间,可以自由地加入空格或换行符,例如以下语言是可以被正确执行的。mySQL> ...

子查询可以出现在SQL语言中那些语句的什么位置
在select语句中,子查询可以被嵌套在select语句的列,表和查询条件中,即select子句,from子句,where子句,group by 子句和having子句

在这句sql语句里% :是什么意思
叫做通配符,代表任何字符任意数量 如'%a%'就代表一个字符串只要包含字母a就符合条件 '%a'则代表一个字符串需要以字母a结尾才符合条件 'a%'就是以a开头的字符串了

在SQL中,创建表的sql语句是什么?
创建表的sql语句是CREATE TABLE。SQL CREATE TABLE是 SQL语言的建表语句,用于创建数据库中的表。基础语法为:CREATE TABLE table (field1 type [(size)] [NOT NULL] [index1] [, field2 type [(size)] [NOT NULL] [index2] [, ...]] [, CONSTRAINT multifieldindex [, ...]])。tabl...

case when语句是什么意思?
Case when语句能在SQL语句中织入判断逻辑,类似于Java中的if else语句。CASE WHEN语句分为简单函数和条件表达式。1、简单函数。CASE 字段 WHEN 预期值 THEN 结果1 ELSE 结果2 END 如果字段值等于预期值,则返回结果1,否则返回结果2。2、条件表达式。SQL CASE 表达式是一种通用的条件表达式,类似于其它...

在sql语言中,实现删除表内记录的语句
(2)如果是想删除整个表可以使用:drop table KF。SQL中删除表中的所有数据的方法:1、TRUNCATE TABLE  删除表中的所有行,而不记录单个行删除操作。 (1)语法:TRUNCATE TABLE name;(2)参数 name 是要截断的表的名称或要删除其全部行的表的名称。2、DELETE语句,属于计算机软件领域...

标识 在 SQL语句中是什么意思
标示,标识。。。一个东西的标识,标志 通过这个字段,可以确定一条记录,一行数据 标示,主键就是一个标示,而且是唯一标示。有些标示,比如一个人的部门属性,标示着他是哪个部门的,但通过这个部门标示,确定不了这个具体的人。因为这个部门有很多人,这样的标示,就是非唯一标示。大概就是这么个意思...

sql语句中“where1=1”是什么意思?
这段代码应该是由程序(例如Java)中生成的,where条件中 1=1 之后的条件是通过 if 块动态变化的。语句将返回t1中所有的记录行 where 1=1 是为了避免where 关键字后面的第一个词直接就是 “and”而导致语法错误。SQL语句 中是SQL语句必须定义的部分,[]中是SQL语句可选择的部分,可以省略的。所...

SQL *和%有什么区别
一、作用不同 1、*通配符:*通配符的作用是用来匹配所有结果集。2、%通配符:%通配符的作用是用来替代一个或多个字符。二、优先级不同 1、*通配符:*通配符的优先级比%通配符高,在同一条sql语句中,优先执行。2、%通配符:%通配符的优先级比*通配符低,在同一条sql语句中,稍后执行。三、针对范围...

孟州市14713131693: 为什么在SQL语句中 不可以对同一个属性进行逻辑“与”的等值运算 -
诸骂克廷: 关于题主这个问题,其实对同一个属性(字段)是可以使用“与逻辑”进行等值运算的,要讲清楚这个我们首先得弄清楚“与逻辑”的内涵,“与逻辑”表示逻辑运算符“and”两边的表达式都成立为“真”,至少一个不成立即为“假”.下面...

孟州市14713131693: 为什么这句“SQL表中任意两列的值不能相同”是错的,请举例! -
诸骂克廷: 正确的理由有一个,但错误的理由有千万个,但归结为一个,那就是不对.只要你能举出一个反例,就证明它是错的,你可以在数据库中试试.create table test (a varchar(20),b varchar(20))insert into test values('测试一样','测试一样')

孟州市14713131693: 为什么不能用一个SQL展示相同的报表和图表呢 -
诸骂克廷: A、B两表结构相同 A、B就是你那两张相同的表 Select * from A union all Select * from B--两张表合并不去重---------- Select * from A union Select * from B--两张表合并去重-

孟州市14713131693: oracle 中 两条sql语句不能在同一行上操作????IBatisNet 把多条sql语句中的回车替换了运行报错怎么办 -
诸骂克廷: 不能在一行的,在同一行上会报错的.

孟州市14713131693: 插入表数据(表中不能存在相同数据)sql语句怎么写 -
诸骂克廷: 没有这种插入时能检查重复的sql语句,查询时有.这种避免表中的数据重复的话只能用主键了,但是在插入时会报错,或者是写个触发器,在插入前检查重复.

孟州市14713131693: 为什么sql里面的关键字distinct不能和order by连用在一个sql语句里 有什么解决办法啊 -
诸骂克廷: 是可以在一个语句里写的,可能是你SQL其它地方报错了 你把全部的语句贴出来,我刚在SQLSERVER试了下,试可以的 这个当然会报错了,order by后面的字段必须要出现在select里面 下面是正确的 select distinct fst,create_time from administrator where id >=1000 order by create_time

孟州市14713131693: 数据库原理及应用判断题( )1,DROP TABLE语句用于删除基本表.( )2,SQL语句中的查询只能针对一个表进行,一个查询不能同时涉及两个以上表.( )3... -
诸骂克廷:[答案] √ * * √ √ * * * * *

孟州市14713131693: sql语句的组合函数不能套用? -
诸骂克廷: 不能,这是系统规定的.而且,这样套用有什么意义? 有时候需要先count再算max,那就多套一层视图或子查询. select max([count]) from ( select count(daihao) as [count] from ....

孟州市14713131693: 在一条SQL语句中同时对两个数据库中的不同表进行操作,有什么好的解决方法吗? -
诸骂克廷: 1.如果是同一服务器:假设 另一个数据库名为'数据库B',并且当然用户对两个数据库都有对应权限 select into [table] from [数据库B].[所有者].[表名]2.如果不在同一服务器 select into [table] from opendatasource('sqloledb','data source=服务器名或IP...

孟州市14713131693: sql中如何对同一列而不在同一行进行比较 -
诸骂克廷: 说的详细点啊.sql="select * from 表名 where left(地址,4)='建外大街'" 还是 sql="select left(地址,4) as 名称 from 表名"

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 星空见康网