GVKun编程网logo

SQL计数where子句(sql语句计数)

3

这篇文章主要围绕SQL计数where子句和sql语句计数展开,旨在为您提供一份详细的参考资料。我们将全面介绍SQL计数where子句的优缺点,解答sql语句计数的相关问题,同时也会为您带来mysql–

这篇文章主要围绕SQL计数where子句sql语句计数展开,旨在为您提供一份详细的参考资料。我们将全面介绍SQL计数where子句的优缺点,解答sql语句计数的相关问题,同时也会为您带来mysql – 带有where子句的SQL MIN函数、mysql – 条件Where子句替代、mysql — where子句不明确、Mysql-where子句与having子句的区别的实用方法。

本文目录一览:

SQL计数where子句(sql语句计数)

SQL计数where子句(sql语句计数)

我有以下SQL语句:

 SELECT        [l.LeagueId] AS LeagueId, [l.LeagueName] AS NAME, [lp.PositionId] FROM            (Leagues l INNER JOIN                     Lineups lp ON l.LeagueId = lp.LeagueId) WHERE        (lp.PositionId = 1) OR                     (lp.PositionId = 3) OR                     (lp.PositionId = 2)

我真正需要的是获取位置计数大于数字的行。就像是:

 SELECT        [l.LeagueId] AS LeagueId, [l.LeagueName] AS NAME, [lp.PositionId] FROM            (Leagues l INNER JOIN                     Lineups lp ON l.LeagueId = lp.LeagueId) WHERE        Count(lp.PositionId = 1) > 2 OR                     Count(lp.PositionId = 3) > 6 OR                     Count(lp.PositionId = 2) > 3

有什么办法可以在SQL中做到这一点?

答案1

小编典典

这个怎么样?:

SELECT        [l.LeagueId] AS LeagueId, [l.LeagueName] AS NAME FROM            (Leagues l INNER JOIN                     Lineups lp ON l.LeagueId = lp.LeagueId) GROUP BY [l.LeagueId], [l.LeagueName] HAVING        SUM(CASE WHEN lp.PositionId = 1 THEN 1 ELSE 0 END) > 2 OR                     SUM(CASE WHEN lp.PositionId = 3 THEN 1 ELSE 0 END) > 6 OR                     SUM(CASE WHEN lp.PositionId = 2 THEN 1 ELSE 0 END) > 3

mysql – 带有where子句的SQL MIN函数

mysql – 带有where子句的SQL MIN函数

这是我的项目表

 Project Table
JNo Name    City
J1  Proj1   London
J2  Proj2   Paris
J3  Proj3   athens
J4  Proj4   India

这是我的货运表

Shipment
SNo PNo JNo Qty
S1  P1  J1  50
S1  P1  J2  90
S1  P2  J1  40
S1  P3  J3  20
S2  P1  J3  110
S2  P2  J2  30
S2  P4  J3  10
S2  P3  J1  100
S3  P1  J3  80
S3  P4  J2  70
S3  P4  J2  70
S4  P1  J3  20
S4  P2  J1  60

我想要提供最小数量的项目名称.

我试过了.但它只返回最小数量值
这是我的代码

select min(qty) from shipment where jno IN(select jno from project)
最佳答案
select p.name from Project p,Shipment s where s.JNo=p.JNo and s.Qty in (select min(qty) from shipment)

mysql – 条件Where子句替代

mysql – 条件Where子句替代

我使用xml来显示查询结果.我有一个与我的查询相关的问题.在客户表中说我有一个数据,其id不是任何其他表中的forigne键,但我仍然想显示数据.我,使用左连接.但问题在于其他表条件(Where子句pr.fActive = 1 …),因此我无法显示仅存在于customer表中但不存在于其他表中的数据.如何做到这一点

<Table>customer cu</Table>
          <Joins>
            left join customerprogramxref cuprxref on cu.ixcustomer=cuprxref.ixcustomer
            left join tblprogram  pr on cuprxref.ixprogram=pr.ixprogram
            left join programworkpackagexref prwpxref on pr.ixprogram= prwpxref.ixprogram
            left join workpackage wp on wp.ixworkpackage =prwpxref.ixworkpackage
            left join workpackageactivityxref wpactxref on              wpactxref.ixworkpackage=wp.ixworkpackage
            left join activity act on act.ixactivity=wpactxref.ixactivity
          </Joins>
          <WhereClause>
            cu.fStatus=1 AND pr.fActive=1 AND pr.fDeleted=0 AND wp.fStatus=1 AND act.fStatus=1
          </WhereClause>

解决方法:

由于LEFT JOIN,在右边部分,未加入时为NULL.

试试这个:

cu.fStatus=1
        AND (pr.fActive=1 OR pr.fActive IS NULL)
        AND (pr.fDeleted=0 OR pr.fDeleted IS NULL)
        AND ...

mysql — where子句不明确

mysql — where子句不明确

SELECT                cat.CategoryID as CategoryID,                count(p.ProductID) as CountProducts            FROM                 Category as cat                LEFT JOIN Products as p on p.CategoryID IN                        (SELECT CategoryID FROM Category as cd                            WHERE cd.ParrentCategoryID = ''876'')            WHERE                 CategoryID = ''876''            ORDER by Name

我们得到错误-“ where子句不明确的列’CategoryID’”。

告诉我请怎么会好?

答案1

小编典典

您得到的错误告诉CategoryIDWHERE子句中的列是不明确的,这意味着系统存在标识适当列的问题,因为存在多个CategoryID列。

为了解决此问题,请使用别名指定要用于WHERE子句的列:

SELECT cat2.CategoryID AS CategoryID    ,cat2.Name AS CategoryName    ,COUNT(p.ProductID) AS CountProductsFROM Category AS catINNER JOIN Category AS cat2 ON cat2.ParrentCategoryID = cat.CategoryIDINNER JOIN Products AS p ON p.CategoryID = cat2.CategoryIDWHERE cat.CategoryID = ''876''GROUP BY cat2.CategoryID, cat2.NameORDER BY cat2.Name

我还更改了查询以获取相同的结果,但我没有使用LEFT JOIN+IN子句+子查询的组合,而是使用了INNERJOIN子句。使用此查询,您只需定义CategoryID一次所需的内容,它将自动获取每个子类别。

我不确定您的查询是否正确运行,因为您正在使用该COUNT功能,而没有按CategoryID…分组结果

希望这会帮助你。

Mysql-where子句与having子句的区别

Mysql-where子句与having子句的区别

  • 顺序问题:where子句必须放在group子句之前;而having子句必须在group子句之后

  1.Where子句

  

  2.having子句

   

  • 字段问题:where子句只可以处理数据表中的数据;having只能处理在group by子句中出现的字段select的列的字段聚合函数处理过的列外部查询中的字段。having根据前面查询出来的是什么就可以在后面接什么

  1.having子句的字段必须出现在检索中(select的查询列、group by中的列、外查询中的列)或者是聚合函数处理后的列,可以是别名

   

  

  2.where子句中的字段必须是数据表(物理表)中的列名,不能是别名或者聚合函数

  

 

  • having通常是与group子句连用,用于进一步说明

 

我们今天的关于SQL计数where子句sql语句计数的分享已经告一段落,感谢您的关注,如果您想了解更多关于mysql – 带有where子句的SQL MIN函数、mysql – 条件Where子句替代、mysql — where子句不明确、Mysql-where子句与having子句的区别的相关信息,请在本站查询。

本文标签: