相关疑难解决方法(0)

SQL - 在Group By中使用别名

只是好奇SQL语法.所以,如果我有

SELECT 
 itemName as ItemName,
 substring(itemName, 1,1) as FirstLetter,
 Count(itemName)
FROM table1
GROUP BY itemName, FirstLetter
Run Code Online (Sandbox Code Playgroud)

这是不正确的,因为

GROUP BY itemName, FirstLetter 
Run Code Online (Sandbox Code Playgroud)

真的应该

GROUP BY itemName, substring(itemName, 1,1)
Run Code Online (Sandbox Code Playgroud)

但为什么我们不能简单地使用前者来方便呢?

sql alias group-by

137
推荐指数
7
解决办法
14万
查看次数

如果我在SELECT子句中使用别名,我该如何引用该别名?

我想做这样的事情:

SELECT round(100*(col_a - col_b)/col_a, 1) as Foo, Foo - col_c as Bar
FROM my_table
WHERE...;
Run Code Online (Sandbox Code Playgroud)

但是,我得到一个错误说Foo不明.由于Foo是从一堆其他列的某些计算得出的,所以我不想再重复该公式Bar.任何解决方法?

sql

8
推荐指数
1
解决办法
2553
查看次数

有子句时出错

select SUM (Bill) from ProductSaleReport group by PCI 
having MONTH(Date) between 1 and 3
Run Code Online (Sandbox Code Playgroud)

任何人都可以帮我找到问题.

我收到错误:

消息8121,级别16,状态1,行1
列'ProductSaleReport.Date'在HAVING子句中无效,因为它不包含在聚合函数或GROUP BY子句中.
消息8121,级别16,状态1,行1
列'ProductSaleReport.Date'在HAVING子句中无效,因为它不包含在聚合函数或GROUP BY子句中.

sql sql-server

7
推荐指数
2
解决办法
2万
查看次数

Oracle SQL 子句求值顺序

在 Oracle 中,首先评估哪些子句类型?如果我有以下内容(假装 .... 代表有效的表达式和关系名称),评估的顺序是什么?

SELECT   ...
FROM     .....
WHERE    ........
GROUP BY ...........
HAVING   .............
ORDER BY ................
Run Code Online (Sandbox Code Playgroud)

我的印象是 SELECT 子句是最后评估的,但除此之外我一无所知。

sql oracle clause operator-precedence

4
推荐指数
1
解决办法
1万
查看次数

'where子句'中的未知列'created_day'

这是用户反馈和图像

SELECT *,DAYNAME(created_on) AS created_day FROM users_feedback WHERE created_day = 'wednesday'
Run Code Online (Sandbox Code Playgroud)

当我执行上面的查询时,它会生成如下错误

Error Code : 1054
Unknown column 'created_day' in 'where clause'

Execution Time : 00:00:00:000
Transfer Time  : 00:00:00:000
Total Time     : 00:00:00:000
Run Code Online (Sandbox Code Playgroud)

mysql sql

3
推荐指数
1
解决办法
1115
查看次数

使用DISTINCT关键字时,为什么此查询结果不会更改?

为什么两个查询的结果相同?(我正在使用northwind数据库.)

SELECT      ContactTitle
        ,   COUNT(CustomerID) AS NumberOfCustomer
FROM        dbo.Customers
WHERE       ContactTitle LIKE '%sales%'
GROUP BY    ContactTitle
HAVING      COUNT(*) >= 5
ORDER BY    NumberOfCustomer desc
Run Code Online (Sandbox Code Playgroud)

SELECT 
DISTINCT    ContactTitle
        ,   COUNT(CustomerID) AS NumberOfCustomer
FROM        dbo.Customers
WHERE       ContactTitle LIKE '%sales%'
GROUP BY    ContactTitle
HAVING      COUNT(*) >= 5
ORDER BY    NumberOfCustomer desc
Run Code Online (Sandbox Code Playgroud)

结果是:

ContactTitle           NumberOfCustomer
---------------------  ----------------
Sales Representative         17
Sales Manager                11
Sales Associate               7
Sales Agent                   5
Run Code Online (Sandbox Code Playgroud)

根据我自己的理解,第二个查询得到不同的标题并计算其记录,所以我期望结果将是无,因为每个标题只有记录计数1.我是对的吗?

sql distinct

3
推荐指数
1
解决办法
145
查看次数

别名不在MYSQL中处理IF条件

我正在编写一个mysql查询并收到错误.

"'字段列表'中的未知列'dat'"

由于在mysql的IF条件中使用别名而发生此错误.

这是mysql查询:

SELECT 
    nCustomerID,
    dDateRegistered,
    (select count(nPlayerID) from credit_logs 
        where nPlayerID=nCustomerID) as total_clog,
    (select count(nPlayerID) FROM bl_transaction_history
        where nPlayerID=nCustomerID) as total_tran,
    (select count(nCustomerID) from customer_freeplays
        where nCustomerID=nCustomerID) as total_free,
    (select dDateAdded from bl_transaction_history
        where nPlayerID=nCustomerID) as dat,
    (select DATEDIFF(now(),dat)/30 ) as date_differece1,
    (select DATEDIFF(now(),dDateRegistered)/30 ) as date_difference2,
    IF (dat IS NOT NULL,(select DATEDIFF(now(),dat)/30 ),
        (select DATEDIFF(now(),dDateRegistered)/30 )) as date_difference
FROM bl_customers
WHERE nAccountStatus=1 
  and bDeleted=0 
having total_clog>0 
    or total_tran>0 
    or total_free>0
Run Code Online (Sandbox Code Playgroud)

任何帮助都会被appriciated .. :)

提前致谢.

mysql alias mysql-error-1064

3
推荐指数
1
解决办法
3379
查看次数

MySQL GROUP BY和ORDER BY命令

之后到底有什么关系?我的意思是如果我这样做

SELECT * FROM  table GROUP BY x ORDER BY y
Run Code Online (Sandbox Code Playgroud)

首先将结果分组然后排序?

mysql sql

2
推荐指数
1
解决办法
238
查看次数

表中给定值的最大出现次数

我有一个表(很大的一个)有很多列,其中两个是"post"和"user".对于给定的"帖子",我想知道哪个"用户"发布最多.

我首先考虑获取所有条目WHERE(post ='wanted_post'),然后抛出一个PHP hack来查找我得到的最大"用户"值,但考虑到我的表的大小,以及我对MySQL的了解不足微妙的调用,我正在寻找一种纯MySQL的方式来获得这个值(基本上在给定的"帖子"上发布最多的"用户"id).

可能吗 ?或者我应该依靠混合SQL-PHP解决方案?

谢谢,Cystack

mysql

1
推荐指数
1
解决办法
2929
查看次数