想象一下有两列的表(还有更多,但与这个问题无关):
`EAN` bigint(20) unsigned DEFAULT NULL,
`parameter_id` mediumint(8) unsigned DEFAULT NULL,
此查询不工作,并返回错误:
SELECT EAN FROM eTovar WHERE EAN GROUP BY EAN HAVING parameter_id IS NULL
查询中的错误(1054):“having子句”中的未知列“parameter_id”
但是这个查询是有效的:
SELECT EAN FROM eTovar WHERE EAN
我试图将多个MySQL语句优化为一个语句,但遇到了一个问题。
MySQL查询:
SELECT companyid, COUNT(*) AS total
FROM timesheet
WHERE userId='1'
AND DATEDIFF(MIN(startDate), MAX(endDate)) <= 77
GROUP BY companyid
HAVING total = 11
我正在尝试做的是选择所有公司,其中恰好有11条记录存在,并且第一条和最后一条记录是在11周内创建的。我得到的错误是“组函数的无效使用”。
这与MIN
我有一个查询,在那里,我需要让所有客户在给定的一个月中花费少于一定金额的地方,并且只返回那些没有达到配额的客户。
现在的查询如下所示。
SELECT cus.id, cus.email_address, COALESCE(SUM(credit_total),0) AS totalSpend
FROM customers AS cus
LEFT JOIN tasks_custs AS tsk ON tsk.user_id = cus.id
WHERE (
YEAR(date_ordered) = '2013'
AND MONTH(date_ordered) = '09
通过阅读MySQL文档,我无法解释phpMyAdmin中这两个查询之间的区别:
SELECT * FROM f_ean GROUP BY ean HAVING type = 'media'
-->给我57059个结果
SELECT ean, type FROM f_ean GROUP BY ean HAVING type = 'media'
-->给我73201个结果
只显示不同的列,查询的结果号怎么会不同呢?
此查询工作正常,但会提取所有结果。我希望它只拉结果,而不是0.00,这是全部到期。这是在查询中计算出来的,但是我不知道如何用0.00排除结果?
SELECT name,
SUM(IF(timeperiod='0',totalinv-paidtotal,0)) AS p0030,
SUM(IF(timeperiod='30',totalinv-paidtotal,0)) AS p3060,
SUM(IF(timeperiod='60',totalinv-paidtotal,0)) AS p6090,
SUM(IF(timeperiod='9
很难解释我需要什么:
简而言之,这就是我所拥有的:
SELECT DISTINCT(CITY) FROM `listingsdb` WHERE `style` = 'Traditional' ORDER BY `style` ASC
这将返回带有STYLE = Traditional的ALL DISTINCT CITY VALUES。
它给了我840个结果,其中800个城市的结果少于10个...我需要进一步减少/限制它,让它只返回值,其中有100个相同的城市匹配显示该城市,并可能将价格值设置为最低100,000。
执行此操作的最有效方法是什么?
我没有包含CITYNAME &
我有一张带有clients_id和支付数据的桌子。我尝试对client_id的所有付款进行汇总,并使用WHERE子句对结果进行筛选,使用下面的SQL:
SELECT client_id, SUM(payment) AS total_payment
FROM table1
WHERE total_payment >= 1000
GROUP BY client_id
此查询不需要WHERE子句即可运行。MySQL返回误差
#1054 - 'where子句‘中未知列'total_payment’
任何指向正确方向的指示都会有帮助。谢谢!
table1示例
| clie
我正在构建一个MySQL查询,以确定几个类别中有多少项出现在给定的日期范围内。我最初的尝试如下:
select Title,
(select count(*) from entries where CategoryID=1
and Date >= @StartDate and Date <= @EndDate) as Cat1,
(select count(*) from entries where CategoryID=2
and Date >= @StartDate and Date <= @EndDate) as Cat2,
(sele
我有大约100,000个商家存储在我的数据库中,表中包含他们的名字,经度,经度
现在,我的搜索函数接受经度/经度输入,并查找半径为10英里的商店。关联商店的组)。对于特许经营,我只想显示最近的商店,而同一特许经营的其他商店被隐藏(如果在10英里半径内有多个商店)。
我试过这样做:
SELECT SQL_CALC_FOUND_ROWS *, xxxxx as Distance
FROM table
WHERE isActive = 1
GROUP BY Name
HAVING Distance < 10
ORDER BY Distance ASC
((ACOS(SIN('$lat
在我的表中,我有一些记录,它们有一些重复的出生日期,所以我想要那些只匹配年份和月份的人的id。
我得到了这样的输出:
但我的期望是:
id dob(column name of table bday)
1 1989-12
3 1989-12
4 1985-11
6 1985-11
MySQL查询#1:
SELECT id, dob
FROM bday
WHERE dob IN (
SELECT dob
FROM bday
GROUP BY dob
HAVING COUNT(id) > 1
)
MySQL查询2:
SELECT EXTRA
我的表类似于命名为'score': ? 我想查询所有cno及其对应的平均学位,该学位至少有5名学生(sno表示学生数量),从3开始。 我尝试了以下查询语句: select cno,avg(degree) from score where cno in (select cno from score group by cno HAVING count(1) > 5 ) and cno like '3%'; 但是,它抛出了一个错误。 我的MySql版本是8.0.18 Expression #1 of SELECT list is not in GRO
create table t1 (c1 integer);
select c1*3 temp, case when (temp <>3) then 1 else 0 end from t1;
在Oracle和MySQL中查询都失败了,但是为什么它们不支持这种类型的查询呢?
我已经看过了与列别名相关的答案。它在where子句中解释了什么是支持的,什么是不支持的,并解释了为什么不支持。但问题是为什么在select子句中不支持它。
以下是我的查询,仅当在WHERE中使用限制条件时,在Group By之前使用限制条件,而在Having中在Group By之后使用限制条件时,不正确运行。我认为Having的作用类似于Where子句,应该在需要执行Group By时使用,但下面的查询不符合这一逻辑:
/*计算没有超出任何经理预算的所有项目的实际总成本。显示经理的姓名、项目和各自项目的金额。
Select mg_name, p_name, sum(actual_cost), sum(expected_cost)
From Project join manager on p_manager = mg_number
Where ac
我在查询中加入了3个表。在我的库存数据库中,价格取自表c,数量取自表b。如何显示在给定值和列的最大值之间订购的用户的记录列表。我在mysql中使用下面的查询来检索记录。正如预期的那样,它显示了错误。如有任何帮助,将不胜感激。
SELECT .... GROUP BY userid HAVING SUM(c.`price` * b.`quantity`) BETWEEN 9000 AND MAX(SUM(c.`price` * b.`quantity`))
我正在尝试获取一个PHP脚本来显示MySQL表中所有重复的值。使用以下代码,我在PHP query窗口中获得了想要的结果,但它不能作为phpMyAdmin mysql_query()工作。
SELECT nordby_log.artikel, a.the_count
FROM
nordby_log,
(SELECT artikel, COUNT(*) AS the_count
FROM nordby_log
GROUP BY artikel) AS a
WHERE nordby_log.artikel = a.artikel
任何帮助都是非常感谢的。
我需要帮助:这个查询工作非常好。
select count(distinct(a.mat)),count(distinct(c.mail)) as nb
from aca as a
left join c on c.mat=a.mat
group by a.mat
order by nb desc;
但当我想过滤
select count(distinct(a.mat)),count(distinct(c.mail)) as nb
from aca as a
left join c on c.mat=a.mat
group by a.mat
order by nb desc
whe
我有一个MySQL表,其中我有来自另一个表的某个id作为外键。这个id并不是这个表所独有的,所以我可以让很多记录保存相同的id。我需要找出哪些in在这个表中被看到的次数最少,并拉出一个包含它们的列表。
例如,如果我有5条id=1记录、3条id=2记录和3条id=3记录,我只想提取is 2和3。然而,表中的数据变化很频繁,所以我不知道在任何给定时刻这个最小值会是什么。如果我使用两个查询,那么这个任务就会非常琐碎,但我只是尝试用一个查询来完成它。我现在拥有的是:
SELECT id
FROM table
GROUP BY id
HAVING COUNT(*) = MIN(SELECT COUNT(
在选择数据时,我可以通过运行以下命令来显示使用GROUP BY对多少行进行分组:
SELECT id, created, COUNT(id) `count` FROM table
GROUP BY id
LIMIT 0,30
count字段很容易输出受GROUP BY影响的行数。在MySQL中,是否可以自动不包括只具有count值为1的任何行?
首先,我不是MySQL查询方面的专家,而且我似乎找不到解决问题的方法。
示例:
SELECT SUM(IF(table1.col1<4,1,0)) AS score WHERE score>0 GROUP BY table1.col2
上面的代码会给出一个错误,因为列分数在table1中不存在。
这是我的解决方法:
SELECT SUM(IF(table1.col1<4,1,0)) AS score GROUP BY table1.col2
然后在PHP中检查每一行
if($row['score']>0){...
当我循环遍历我知道不需要的行时,存在一个
我有一个查询:
select cast(A.when as date) as purchase_date, A.id
from purchase A
group by cast(A.when as date), A.id order by A.id
结果:
PURCHASE_DATE ID
------------- ------
04/20/1999 1
12/01/2001 1
08/08/1998 2
02/13/1999 2
04/16/1999 2
02/23/2001 2
04/24/
我目前有以下(简化的) sql,它从主表table1中选择用户数据。此查询仅选择自给定日期以来未登录的用户。我使用子查询,因为login表与主表是分开的。这两个表通过用户ID列相关联。这个可以完美地工作。
// sql to get all records that haven't logged in since date above
$sql = "SELECT t1.*
FROM table1 t1
WHERE '2016-08-01' > (SELECT MAX(t2.DateCol)
FROM table2 t2