Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL中的AND或OR子句_Sql_Sql Server - Fatal编程技术网

SQL中的AND或OR子句

SQL中的AND或OR子句,sql,sql-server,Sql,Sql Server,我想写这样一个查询: SELECT * FROM db WHERE ID = id AND Text != text OR Text = text 我的意思是ID=ID子句和Text!=text子句应与and组合,且应与或与最后一个子句组合。我该怎么做?谢谢 SELECT * FROM db WHERE (ID = id AND Text != text) OR Text = text 在组合和以及或 SELECT * FROM db WHERE (ID = id AND Text != t

我想写这样一个查询:

SELECT * FROM db WHERE ID = id AND Text != text OR Text = text
我的意思是
ID=ID
子句和
Text!=text
子句应与and组合,且应与
与最后一个子句组合。我该怎么做?谢谢

SELECT * FROM db WHERE (ID = id AND Text != text) OR Text = text
在组合
以及

SELECT * FROM db WHERE (ID = id AND Text != text) OR Text = text
使用括号分隔两个子句

使用逻辑运算符(和/或):

SELECT *
FROM   db
WHERE  (ID = id AND TEXT != TEXT)
       OR 
       OR TEXT = TEXT
或者您可以使用以下用例:

SELECT * FROM db where 
(CASE WHEN ID = id THEN (CASE WHEN Text != text THEN 1 ELSE 0 END) ELSE 0 end = 1) OR
(CASE WHEN Text = text THEN 1 ELSE 0 END) = 1
试试这个:
选择*FROM db WHERE(ID=ID和Text!=Text)或Text=Text

什么是
Text
Text
?它们在区分大小写的排序规则中是不同的列吗?“如果是这样的话,那似乎令人困惑。”马丁·史密斯,没错,我在考虑
连接
。显然,这里的情况并非如此。我假设它们是不同的字段,这当然回避了一个问题:为什么有两个字段的名称几乎相同?
SELECT * FROM db WHERE (ID = id AND Text != text) OR Text = text
SELECT * FROM db where 
(CASE WHEN ID = id THEN (CASE WHEN Text != text THEN 1 ELSE 0 END) ELSE 0 end = 1) OR
(CASE WHEN Text = text THEN 1 ELSE 0 END) = 1