sql - 在 MySQL 中选择查询

标签 sql select mysql join

两个表

表1

ID FileName

1  abc
2  abc
3  abc
4  xyz

表2

ID Table1_ID isDeleted
1   1        1
2   2        1
3   3        0
4   4        0

我需要通过传递table1的任何ID来获取isDeleted=1的文件名计数,即对于ID的所有值(1,2,3),我需要计数为2

我尝试使用以下查询

SELECT COUNT(t1.FileName) FROM Table1 t1 
LEFT OUTER JOIN Table1 t11 ON t1.FileName=t11.FileName 
INNER JOIN table2 t2 ON t2.Table1_ID =t1.ID AND t2.isDeleted=1
WHERE t1.ID=X; 

X-1,2,3

这总是返回 3。

编辑:我需要通过传递第一个表中的 ID 来获取第一个表中的文件名计数。计数应基于第二个表中的 isdeleted 列。这些表通过列 ID (table1) 和 Table1_ID (table2) 关联

最佳答案

试一下:

select SUM(isDeleted)
from Table2 
where Table1_ID in (
  select ID from Table1
  where FileName = (select FileName
                    from Table1
                    where ID = 1)
)

编辑:获取文件计数:

select count(*) 
from Table1 a
join Table2 b on a.ID = b.Table1_ID and b.isDeleted = 1
where a.FileName = (select FileName
                   from Table1
                   where ID = 1)

关于sql - 在 MySQL 中选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4023618/

相关文章:

mysql - 检查用户匹配数组是否作为具有匹配列的链接表中的条目存在

java - 在多个表中查找值

mysql - 从MySQL中的一个结果集中的多个表中获取数据

asp.net - 单击以选择 GridView 中的行,导致编辑模式下回发

sql-server-2008 - 使用 SQL 存储过程将我的 GUID 选择到变量中?

mysql - 在一个sql查询中选择不同时间集中的结果

mysql - 从Where子句计算行数并在不同的列中显示每个计数

java - NetBeans 目录名称更改

php - MySQL 根据多种因素计算唯一行数

sql - 我们可以在同一模式中创建具有相同名称的同义词吗