【问题标题】:Select query in MySQL在 MySQL 中选择查询
【发布时间】:2010-10-26 12:25:52
【问题描述】:

两张桌子

表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) 关联

【问题讨论】:

    标签: sql select mysql join


    【解决方案1】:

    试一试:

    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)
    

    【讨论】:

    • 很抱歉它仍然返回零
    • @Sri 好的!我改变了方法..试试这个。
    • @Sri 你能提供更多信息吗?也许我们遗漏了一些东西,因为这应该可以工作。
    • 但是这里我需要文件数而不是被删除的总和
    • @Sri 我添加了一个查询来根据文件名获取文件计数,如果您需要其他信息,请告诉我。
    【解决方案2】:

    这对我有用:

    declare @id int
    set @id = 1 /*Or 2 or 3 or 4, etc.*/
    
    select sum(isdeleted)
    from table2
    where table1_id in 
        (select id 
        from table1 
        where filename = (select filename 
                          from table1 
                          where id = @id))
    

    编辑:我看不出这与 Fosco 的回答有何不同。

    【讨论】:

      【解决方案3】:
      SELECT COUNT(t1.FileName) FROM Table1 t1 
      INNER JOIN table2 t2 ON t2.Table1_ID =t1.ID AND t2.isDeleted=1
      WHERE t1.ID=X; 
      

      【讨论】:

      • 或者更简单的“Select Count(isDeleted) FROM Table2 where Table1_ID = X and isDeleted =1”
      • 如果我通过 1 或 2 或 3,我需要根据表 2 中的 isdeleted 列将计数设为 2
      • 啊...我误解了您想要按名称而不是 ID 分组的意图尝试上面的 FOSCO 答案,他似乎在正确的轨道上
      猜你喜欢
      • 2021-11-19
      • 2011-09-18
      • 1970-01-01
      • 2016-01-16
      • 2018-10-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-25
      相关资源
      最近更新 更多