当前位置:  开发笔记 > 数据库 > 正文

如果语法错误,SQL Exists语句如何工作?

如何解决《如果语法错误,SQLExists语句如何工作?》经验,为你挑选了2个好方法。

为什么即使SELECT缺少a FROM,这个SQL查询仍然有效,这将是一个语法错误.另请注意,查询仅显示满足该WHERE子句的查询.

CREATE TABLE Customer_Tbl
(
    CustomerName VARCHAR(50), 
    Address VARCHAR(250),
    Country VARCHAR(50)
);


INSERT INTO Customer_Tbl 
VALUES
    ('AAA', '','Philippines'),
    ('BBB', '','Mexico'),
    ('CCC', '','Philippines'),
    ('DDD', '','Mexico'),
    ('EEE', '','Philippines');


SELECT *
FROM Customer_Tbl 
WHERE EXISTS(
    -- This is missing a FROM
    -- running it by itself is a syntax error.
    SELECT 2 Customer_Tbl 
    WHERE Country = 'MEXICO'
);

这是对SQL Server 2012和2014的测试,这是一个在线示例:http://rextester.com/GDGB80815



1> Vladimir Bar..:

SQL 语句FROMSELECT语句中不需要.

例如,以下查询中没有语法错误:

SELECT 2 AS t
WHERE 0 = 0

它返回一行包含列t和值2.

你可以写简单

SELECT 2 AS t

得到相同的结果.


您的查询与此相同:

SELECT *
FROM Customer_Tbl 
WHERE EXISTS(
    SELECT 2 AS Customer_Tbl 
    WHERE Customer_Tbl.Country = 'MEXICO'
);

Inner Customer_Tbl是具有常量的列的别名2.所述CountryWHERE是外表的列Customer_Tbl.

使用AS别名并使用表名完全限定列是一种很好的做法.


当您尝试单独运行内部部件时

SELECT 2 Customer_Tbl 
WHERE Country = 'MEXICO'

它失败不是因为没有FROM,而是因为解析器不知道是什么Country:

消息207,级别16,状态1,行2无效的列名称"国家/地区".


为了完整起见,以下是MSDNSELECT中SQL Server 中语句的语法:


            
重庆制造漫画社
这个屌丝很懒,什么也没留下!
Tags | 热门标签
RankList | 热门文章
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有