SQL查询两个源

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

我有一个视图和表,如下所示

表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 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 |