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 查询以在两列中显示具有重复值的行_Sql_Sql Server - Fatal编程技术网

Sql 查询以在两列中显示具有重复值的行

Sql 查询以在两列中显示具有重复值的行,sql,sql-server,Sql,Sql Server,我有表1: id|name|city ------------- 1 | bat|nyc 2 | cat|del 2 | rat|bom 3 | mat|xyz 表2 id|name|city -------------- 1 |bat|dsada 2 |cat|sadasd 3 |rat|sdasdas 2 |rat|asdas 我需要一个查询来显示在上面示例中查询必须返回的两个表中id和名称相同的行 我需要一个查询来显示行 1|bat|nyc 2|cat|del 从第一个表来看,最简

我有表1:

id|name|city
-------------
1 | bat|nyc
2 | cat|del
2 | rat|bom
3 | mat|xyz
表2

id|name|city
--------------
1 |bat|dsada
2 |cat|sadasd
3 |rat|sdasdas
2 |rat|asdas
我需要一个查询来显示在上面示例中查询必须返回的两个表中id和名称相同的行 我需要一个查询来显示行

1|bat|nyc
2|cat|del 
从第一个表来看,最简单(可能也是最有效)的方法是使用
EXISTS

SELECT id,name,city FROM Table1 t1
WHERE EXISTS
(
   SELECT 1 FROM Table2 t2
   WHERE t2.name = t1.name
   AND t2.id  = t1.id
)

尝试将两个表连接起来,如下所示

select tabl1.* from table1
inner join table2
on table1.id=table2.id and table1.name=table2.name

尝试此操作:联接将确保满足这两个条件,即两个表中的两条记录对于
id
name
具有相同的值

Select t1.name, t1.city from Table1 t1
 Join Table2 t2
  ON t1.id = t2.id and 
        t1.name = t2.name

'选择*'和'on'而不是'where'@codingbiz-您需要写t1.name,t1.city,否则它会给您提供模棱两可的列错误位置。没有在查询窗口中测试?
Select t1.name, t1.city from Table1 t1
 Join Table2 t2
  ON t1.id = t2.id and 
        t1.name = t2.name