SQL查询两个源
我有一个视图和表,如下所示 表1 视图1 我试图实现的结果是显示View1中的所有行,这些行的View1.Site列与Table1.Country和Table1.City匹配。我的困惑是怎么做,因为我不是一个sql的人,但更多的C等 下面是我想要创建的结果数据。我不知道是否可以仅从View1或使用什么函数来完成此操作 结果 谢谢你可以试试这个SQL查询两个源,sql,Sql,我有一个视图和表,如下所示 表1 视图1 我试图实现的结果是显示View1中的所有行,这些行的View1.Site列与Table1.Country和Table1.City匹配。我的困惑是怎么做,因为我不是一个sql的人,但更多的C等 下面是我想要创建的结果数据。我不知道是否可以仅从View1或使用什么函数来完成此操作 结果 谢谢你可以试试这个 SELECT V.*, CASE WHEN T.Country IS NULL THEN 'N' ELSE 'Y' END ExistInTable1 F
SELECT V.*, CASE WHEN T.Country IS NULL THEN 'N' ELSE 'Y' END ExistInTable1 FROM View1 V
LEFT JOIN Table1 T ON V.Site = (T.Country + T.City)
您需要对表进行左连接,然后检查它是否与视图中的信息匹配,如下所示:
SELECT
VW.Column1
,VW.Column2
,VW.Site
,CASE WHEN ISNULL(T.country, T.city) IS NULL THEN 'N' ELSE 'Y' END AS ExistInTable1
FROM View1 VW
LEFT JOIN Table1 T
ON VW.site = CONCAT(T.country, T.City)
LEFT JOIN关键字返回左表View1中的所有记录,以及右表Table1中的匹配记录。如果没有匹配项,则右侧的结果为NULL。请检查CASE语句
您也可以对其进行测试。这是T-SQL,但对于大多数其他类型的SQL,其格式应该非常相似 MS SQL Server 2014架构设置: 问题1: :
请发布您迄今为止尝试过的内容。如果您还没有尝试编写SQL,那么只需从a.field1=b.field1和a.field2=b.field2上的左连接b中选择*。您的view1中的专栏网站是否与table1 country和table1 city都匹配是值得怀疑的,那么哪些字段需要匹配呢?Merhaba Serkan,我刚刚构建了SQL Select并发布在这里,看到了您的。有趣的是,即使对于别名、连接等,我也有相同的查询:实际上,这种短查询没有太多选择。但equal query即使是相同的别名也很有趣:
+---------+---------+-------+---------------+
| Column1 | Column2 | Site | ExistInTable1 |
+---------+---------+-------+---------------+
| Test | Test2 | UKLDN | Y |
| Test | Test2 | USNEY | Y |
| Test | Test2 | USLAX | Y |
| Test | Test2 | PELMA | N |
+---------+---------+-------+---------------+
SELECT V.*, CASE WHEN T.Country IS NULL THEN 'N' ELSE 'Y' END ExistInTable1 FROM View1 V
LEFT JOIN Table1 T ON V.Site = (T.Country + T.City)
SELECT
VW.Column1
,VW.Column2
,VW.Site
,CASE WHEN ISNULL(T.country, T.city) IS NULL THEN 'N' ELSE 'Y' END AS ExistInTable1
FROM View1 VW
LEFT JOIN Table1 T
ON VW.site = CONCAT(T.country, T.City)
CREATE TABLE Table1 (Country varchar(5),City varchar(5)) ;
INSERT INTO Table1 (Country,City)
VALUES ( 'UK','LDN'),('US','NEY'),('US','LAX')
;
CREATE TABLE View1 (Column1 varchar(10), Column2 varchar(10), Site varchar(10)) ;
INSERT INTO View1 (Column1,Column2,Site)
VALUES ('Test','Test2','UKLDN')
, ('Test','Test2','USNEY')
, ('Test','Test2','USLAX')
, ('Test','Test2','PELMA')
;
SELECT v.Column1, v.Column2
, CASE WHEN LEN(COALESCE(t.Country,t.City)) > 0 THEN 'Y' ELSE 'N' END AS ExistsInTable1
FROM View1 v
LEFT OUTER JOIN Table1 t ON v.Site = (t.Country+t.City)
| Column1 | Column2 | ExistsInTable1 |
|---------|---------|----------------|
| Test | Test2 | Y |
| Test | Test2 | Y |
| Test | Test2 | Y |
| Test | Test2 | N |