只是好奇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)
但为什么我们不能简单地使用前者来方便呢?
我想做这样的事情:
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.任何解决方法?
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子句中.
在 Oracle 中,首先评估哪些子句类型?如果我有以下内容(假装 .... 代表有效的表达式和关系名称),评估的顺序是什么?
SELECT ...
FROM .....
WHERE ........
GROUP BY ...........
HAVING .............
ORDER BY ................
Run Code Online (Sandbox Code Playgroud)
我的印象是 SELECT 子句是最后评估的,但除此之外我一无所知。

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) 为什么两个查询的结果相同?(我正在使用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.我是对的吗?
我正在编写一个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 .. :)
提前致谢.
之后到底有什么关系?我的意思是如果我这样做
SELECT * FROM table GROUP BY x ORDER BY y
Run Code Online (Sandbox Code Playgroud)
首先将结果分组然后排序?
我有一个表(很大的一个)有很多列,其中两个是"post"和"user".对于给定的"帖子",我想知道哪个"用户"发布最多.
我首先考虑获取所有条目WHERE(post ='wanted_post'),然后抛出一个PHP hack来查找我得到的最大"用户"值,但考虑到我的表的大小,以及我对MySQL的了解不足微妙的调用,我正在寻找一种纯MySQL的方式来获得这个值(基本上在给定的"帖子"上发布最多的"用户"id).
可能吗 ?或者我应该依靠混合SQL-PHP解决方案?
谢谢,Cystack