我为MySql编写了一个查询,它使用限制和按关键字分组。它在MySql上很好地工作。查询是:
SELECT
tester,
firstname,
COUNT(*) total
FROM mnrelease_details a LEFT JOIN users b ON tester='guest'
WHERE a.project='testpro'
GROUP BY tester ORDER BY total ASC LIMIT 10;
我试着把它翻译成to,以便在Server上使用.下面是我对Sql Server的看法
GROUP BY将记录组织成组。因此,一个组可以包含许多行,MySQL可以选择其中的任意行。下面是一个问题的:
"mysql只返回第一行。“--也许这就是它的工作方式,但它不能保证。文档中说:“服务器可以自由地从每个组中选择任何值,因此,除非它们是相同的,否则所选择的值是不确定的。”
是否可以显式地选择组MySQL的哪些行应该返回?类似于这个伪代码:
SELECT * FROM `visits` GROUP BY `visitor_id`
(BUT PICK UP ONLY THOSE `visits` WHERE `venue` = 3)
Doctrine2 DQL允许以下
$query = $em->createQuery('SELECT u.id FROM CmsUser u WHERE :groupId MEMBER OF u.groups');
$query->setParameter('groupId', $group);
$ids = $query->getResult();
数据库是否支持子句的MySQL成员?
此外,在前面的例子中,$group是实体"Group“的id还是"Group”实体本身的实例?
如何才能使此查询起作用:
SELECT column1.....,SUM(Hits) AS Hits
FROM table
WHERE SUM(Hits) > 100
GROUP BY column1.....
问题是where子句,mysql显示错误:
Error Code : 1111
Invalid use of group function
我尝试将查询更改为:
SELECT column1.....,SUM(Hits) AS Hits
FROM table
WHERE Hits > 100
GROUP BY column1..
以下查询是相同的,还是可能得到不同的结果(在任何主要的DB系统中,例如MSSQL、MySQL、Postgres、SQLite):
在相同的查询中执行这两个操作:
SELECT group, some_agg_func(some_value)
FROM my_table
GROUP BY group
ORDER BY some_other_value
子查询中的排序:
SELECT group, some_agg_func(some_value)
FROM (
SELECT group, some_value
FROM my_table
ORDER BY some_oth
我得到了错误
SQL Error (1055): Expression #7 of SELECT list is not in GROUP BY clause and contains nonaggregated column 'ifu.amount' which is not functionally dependent on columns in GROUP BY clause; this is incompatible with sql_mode=only_full_group_by
从5.6迁移到mysql 8.0之后。我知道通过禁用ONLY_FULL_GROUP_BY
有人能告诉我这个mysql查询有什么问题吗?
$p = mysql_query("SELECT name,subname FROM brands GROUP BY name WHERE
having count(*) > 10 ORDER BY RAND() LIMIT 1")or die(mysql_error());
上面写着:
您的SQL语法出现了错误;请检查与您的MySQL服务器版本相对应的手册,以便在第1行使用接近于“由RAND()限制1顺序计数(*)> 10次”的正确语法。
关于MySQL中的以下行为,我有一个非常基本的问题。
假设我们执行以下GROUP BY
SELECT a, b, SUM(c)
FROM table
GROUP BY b;
字段a发生了什么,它既不是聚合的,也不是包含在GROUP BY字段中的?
MySQL只是隐式地将FIRST(a)应用于a吗?如果是,这种行为是一致的还是从a的所有值中获取一个随机值?
我有以下查询,它可以做我想做的事情,但是我怀疑不需要子查询就可以做到这一点:
SELECT *
FROM (SELECT *
FROM 'versions'
ORDER BY 'ID' DESC) AS X
GROUP BY 'program'
我需要的是按程序分组,但以"ID“为最高值的版本返回对象的结果。
在我过去的经验中,这样的查询应该可以在MySQL中工作,但出于某些原因,它不是:
SELECT *
FROM 'versions'
GROU
我正在尝试获取mysql查询的计数。这很简单:
SELECT COUNT(id) FROM table WHERE [insert rule here] GROUP BY grouper
问题是因为最后的group by,我最终得到了每个组的行数,而我只是想要一个总数。
为了做到这一点,我将把结果放在一个查询的数组中,它看起来更像这样:
$res = mysql_query(SELECT * FROM table WHERE [insert rule here] GROUP BY grouper)
$count = mysql_num_rows($res);
这行得通,但我只想用COUNT。
寻找一种从MySQL数据库中查询数据并将其写入输出文本文件的方法。我正在尝试从远程windows机器中查询Linux服务器数据库。
MySQL查询:
mysql -u XXX -pXXX -h ttplxapp-esm01.abc.com -D telalert -e "select max(convert_tz(start_time,\"+00:00\",\"-04:00\")) AS Time,group_concat(username SEPARATOR \" \") AS Contact, message AS Message f
我连接了几个表,并通过GROUP BY聚合了一些列。这就是我用MySQL做的事情,现在我要把它们移植到MSSQL上。
一个简单的例子是员工和项目:
select empID, fname, lname, title, dept, count(projectID)
from employees E left join projects P on E.empID = P.projLeader
group by empID
...that可以在MySQL中工作,但MySQL更严格,要求所有内容要么包含在聚合函数中,要么包含在GROUP BY子句中。
当然,在这个简单的例子中,我假设我可以在group
这是我对mysql查询字符串的代码:
设queryString = SELECT table1.*, group_concat(documents.url) as documentsUrl FROM table1 LEFT JOIN documents ON table1.Id = documents.table1_fk group by table1.Id;
if (payload.searchString) {
queryString += ` WHERE firstName LIKE '%${payload.searchString}%' OR l
我的项目中配置了两个数据库,一个在本地机器上运行,另一个运行在远程服务器上。我在访问远程DB服务器时没有任何问题,但是在访问本地MySQL数据库时得到以下错误。
WARN [org.hibernate.util.JDBCExceptionReporter] SQL Error: 1140, SQLState: 42000
ERROR [org.hibernate.util.JDBCExceptionReporter] Mixing of GROUP columns (MIN(),MAX(),COUNT(),...) with no GROUP columns is illegal if
我有用户表(简化):
id | username | url
我正在试图找到具有相同域名的用户数量,因此我通过http mysql函数调用从url列中删除replace文本,并将被剥夺的值group by删除,但它不起作用。
我试图运行以下查询:
SELECT replace(url, "http://", "") u, count(u) c
FROM users
GROUP BY u
ORDER BY c DESC
我得到了错误:
Unknown column 'u' in 'field list'
有什么想法吗?如何在列上运
我现在用红移。那么Id想要运行查询,比如
SELECT to_char(created_at, 'HH24') AS hour , to_char(created_at, 'YYYY-MM-DD HH24') AS tmp FROM log GROUP BY tmp;
这会返回错误,当我在mysql中这样做时,它似乎是很好的。此错误是
ERROR: column "log.created_at" must appear in the GROUP BY clause or be used in an aggregate function
当我更改
在mySQL中,以下工作:案例1:
Select X , MAX(Y) from table
但是在中,您将得到“它既不包含在聚合函数中,也不包含在GROUP BY子句中”。
正确的方法是
Select X, MAX(Y) from table group by X
更糟糕的是,在mySQL中,您可以:案例2:
Select X, Y, MAX(Z) from table group by X
我的问题是,在上述情况下,MySQL如何确定Y?情况1中的X值如何?为什么MySQL允许这种奇怪的行为?
我正在尝试编写一个查询,向我显示所有订单及其选项。到目前为止,这已经完成了,但是当我尝试按order id对它们进行分组时,它只为每个选项打印一个单独的行,而不是order ID及其下的所有选项。
我遗漏了一些东西,但找不到它是什么:)
这是我所拥有的
$sql = 'SELECT *
FROM `order` RIGHT JOIN `order_option`
on order.order_id=order_option.order_id
where order_status_id = 2
group by order
背景信息
系统
操作系统:
bash$ lsb_release -a
No LSB modules are available.
Distributor ID: Debian
Description: Debian GNU/Linux 6.0.5 (squeeze)
Release: 6.0.5
Codename: squeeze
MySQL:
bash$ mysql --version
mysql Ver 14.14 Distrib 5.1.63, for debian-linux-gnu (x86_64) using readline 6.1
数据库
引擎
根据MySQL的文档,我在group by之前阅读了SELECT executes。我有一个名为Views的表,如下所示,并查询
select distinct(viewer_id) as id
from Views v
group by viewer_id,view_date
having count(distinct(article_id))>1;
在这个查询中,如果根据文档在group by之前执行select,那么由于只选择了viewer_id,那么如何能够基于view_date进行group by。这真的让我对group by和select的确切顺序感到困惑。
+------
我有一个在MySQL上运行良好的查询,现在不在PostgreSQL上了--这是一个查询:
SELECT "users".*
FROM "users"
JOIN "favorites" ON "favorites"."user_id" = "users"."id"
WHERE users.id NOT IN (2)
AND favorites.favoritable_id IN (1)
GROUP BY favorites.user_id
OR
使用中的Employee和Department表
我正在尝试构建另一个组合表,显示在总部和研究部门工作的员工数量。
到目前为止,我已经尝试过了,但是我的having子句总是出错。有什么建议吗?
mysql> select e.fname, d.dname
-> from department d
-> inner join employee e on e.dno = d.dnumber
-> group by e.fname
-> having d.dname='Headquarters','Research
现在正在进行从MYSQL到ORACLE的数据库迁移。
我有MySQL方面的经验,但没有Oracle方面的经验,所以请帮助我将下面的MYSQL查询转换为ORACLE
Mysql查询:
SELECT MIN(id) as min_id, Server_Name
FROM details
WHERE Server_Role IS NOT NULL THEN
GROUP BY Server_Name
我想要的SQL如下所示:
SELECT week_no, type,
SELECT count(distinct user_id) FROM group WHERE pts > 0
FROM base_table
GROUP BY week_no, type
但是我知道我可以使用COUNT(DISTINCT user_id)来计算每个组中的总用户数,但是我如何计算满足条件'pts > 0‘的用户数量呢?
我在用mysql,
谢谢。
这可能是两个问题。使用mysql/mariadb。我正在尝试查找某个字段的重复项。
SELECT field1, COUNT(*) c FROM table1 WHERE c > 1 GROUP BY field1;
Error Code: 1054. Unknown column 'c' in 'where clause'
如果我将别名放在引号中,它可以工作,但找不到重复项:
SELECT field1, COUNT(*) 'c' FROM table1 WHERE 'c' > 1 GROUP BY field1;
下面是我的MySQL查询及其返回的内容:
SELECT email, COUNT(*) AS num
FROM collectors_users
WHERE subscribed != 'NO'
AND lastLogin IS NULL
GROUP BY email
ORDER BY dateadded DESC;
我只想返回num > 1的结果。我试图像这样更改我的查询,但是说num不是一个公认的列是行不通的:
SELECT email, COUNT(*) AS num
FROM collectors_users
WHERE subscrib
在MySQL WHERE子句中使用派生值不起作用。有没有办法模拟这种行为?下面是一个由于WHERE count > 5行而失败的查询示例:
SELECT
title,
company_id,
count( id ) as count
FROM
table
WHERE
count > 5
GROUP BY
title,
company_id
我重写了一个从Mysql到oracle的查询,而Mysql给了我一行,oracle给出了倍数,只是想知道为什么?
Mysql查询
select me.col1,
me.col2,
me.col3,
min(col3) as me_col3 ,
group_concat(col2) col4,
from
my_sql_table me
group by me.col2
order by col3
重写为Oracle
select
me.col1,
me.col2,
me.
我在MySQL中有非聚集行数据,我需要创建一个透视表。
我运行我的查询:
SELECT
a.id,
a.kredit_member_no,
CASE WHEN b.slug='fullname' THEN a.value END as fullname,
CASE WHEN b.slug='gender' THEN a.value END as gender,
CASE WHEN b.slug='email' THEN a.value END as email
FROM kredit_data a
LEFT JOIN mas
我想要写一个sql查询,如果特定列的和为零,那么结果将被检索。我尝试了如下:(我只写了检查部分,因为错误只会出现在这个部分)。
query=.... WHERE SUM(column1)='0'
coumn1有整数数据类型。我得到了以下错误:
java.sql.SQLException: Invalid use of group function
at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:946)
任何帮助都是非常感谢的。谢谢。
有人知道这个查询是怎么回事吗?我要做的是,如果courseID表中的elective_modules表在group_elective_modules表中不存在,那么在group_elective_modules中打印所有退出。但是我一直得到错误的操作数应该包含1列
这里是我的查询
$alternativeEQuery =
"SELECT elective_modules.courseID,elective_modules.yr
FROM elective_modules
WHERE elective_modules.yr = '$year1'
AND ele
我有一个Laravel查询,当我们的数据库使用我们的MySQL DB时,它可以工作,但当我切换到新的PostgreSQL DB时,它停止工作。
我使用Laravel的group by函数,如下所示:
$this->crud->groupBy('leads.id')
翻译成mysql的整个查询如下:
select count(*) as aggregate
from (select leads.* from leads
where leads.club_id in ('TR71') and
leads.deleted_at is null GRO
我有张桌子。表的名称是"group“。
我运行这样的查询:
SELECT * FROM GROUP
存在这样的错误:
Error Code: 1064
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'group
LIMIT 0, 1000' at line 1
有办法解决我的问题吗?
谢谢
在MySQL中,如果使用GROUP BY但没有指定ORDER BY,结果集是什么顺序?
我继承了如下查询的代码:
SELECT col1, COUNT(col1)
FROM table
GROUP BY col1
(实际上,SELECT语句可能要复杂得多,涉及到JOIN等,但是让我们从基本原理开始。)注意,这里没有ORDER BY。
在SQL Server BOL中,有人告诉我:
GROUP BY子句不对结果集排序。使用ORDER子句对结果集进行排序。
我一直无法找到一份声明,说明MySQL GROUP BY是否承诺只从GROUP BY订购特定的订单?如果可以提供一个MySQL引用来支