AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / dba / 问题

问题[group-concatenation](dba)

Martin Hope
Thunder Rabbit
Asked: 2018-05-18 22:51:52 +0800 CST

GROUP_CONCAT 不受 WHERE 限制

  • 1

Buildings并且与Facilities它们之间的 id 链接表具有多对多关系。我想选择具有特定设施的建筑物,并在单个列中显示每个建筑物的其他设施。

如果我 SELECT 基于 TABLE ,则使用 GROUP_CONCAT 有效Buildings,

SELECT `b`.`building_name`, `b`.`address`, 
GROUP_CONCAT(`ft`.`facility_type` ORDER BY `facility_type`) AS `facilities`
FROM `buildings` `b`
JOIN `buildings_2_facilities` USING (`building_id`)
JOIN `facility_types` `ft` USING (`facility_id`)
WHERE `b`.`latitude` > 1
GROUP BY `building_id`

http://sqlfiddle.com/#!9/ceec20/10

但如果我还基于设施进行选择,则只会在 GROUP_CONCAT 中返回该设施。

SELECT `b`.`building_name`, `b`.`address`, 
GROUP_CONCAT(`ft`.`facility_type` ORDER BY `facility_type`) AS `facilities`
FROM `buildings` `b`
JOIN `buildings_2_facilities` USING (`building_id`)
JOIN `facility_types` `ft` USING (`facility_id`)
WHERE `b`.`latitude` > 1 AND `facility_id` = 2
GROUP BY `building_id`

http://sqlfiddle.com/#!9/ceec20/11

如何返回包含每栋大楼所有设施的结果?

mysql group-concatenation
  • 1 个回答
  • 1661 Views
Martin Hope
Buttle Butkus
Asked: 2018-02-13 21:36:12 +0800 CST

为什么将 `group_concat_max_len` 设置为低于最大值?

  • 12

Ubuntu 12.04 上的 MySQL 5.5.28

如果结果比结果长,group_concat_max_len则结果将被优雅地截断。

目前我有一个脚本试图提前检查所需的长度并设置group_concat_max_len为足够大。

但是检查会增加额外的查询。group_concat_max_len仅设置为最大值有什么缺点吗?好处是更少的查询。

mysql group-concatenation
  • 2 个回答
  • 13654 Views
Martin Hope
Philip Lee
Asked: 2017-04-26 07:12:53 +0800 CST

MySQL 在使用 GROUP_CONCAT 将数据连接在一起之前对数据进行排序?

  • 2

我有一个系统可以实时跟踪数千个对象并将它们的位置存储在数据库表中。我不是每隔几秒钟就存储他们的位置,而是在它发生变化时存储他们的位置、方向、速度和时间。对于我正在跟踪的对象数量,这使表格相对较小。

每一行都包含单个对象的数据,虽然这些数据应该按时间顺序进入数据库,但我想确保在将它们连接在一起之前按时间顺序提取数据,以便我可以绘制数据.

我的表结构是:

CREATE TABLE tracks (
    id int(11) auto_increment,
    objectId int(11) default 0,
    posTime bigint(15) default 0,
    X float(6,4) default 0.0000,
    Y float(6,4) default 0.0000
    Z int(11) default 0,
    hdg float(4,1) default 0.0,
    spd float(5,1) default 0,
    PRIMARY KEY(id));

通过使用此查询:

SELECT   objectId, 
         group_concat(X, ',', Y, ',', hdg, ',', spd separator ',') as trail 
FROM     tracks 
WHERE    objectId > 0 
group by objectId;

我以我想要的格式获得我想要的数据,例如:

14979491 | -26.3286,-48.4679,206.0,362.0,-26.3684,-48.4892,205.0,357.0

即 ObjectId | X1,Y1,航向1,速度1,X2,Y2,航向2,速度2,....等

但是,我不是 100% 确信位置报告的时间顺序正确。

如何在将它们连接在一起之前通过增加 posTime 对每个 id 的位置报告进行排序?从理论上讲,这只是添加 ORDER BY posTime ASC 的一种情况,但我不确定如何或在何处将其添加到我的查询中,因为之前的所有尝试都失败了......

编辑澄清:我知道 group_concat 支持 ORDER BY 子句,但我不希望在结果中返回我排序的列 (posTime)。

mysql group-concatenation
  • 1 个回答
  • 2362 Views
Martin Hope
Arpan Das
Asked: 2015-06-27 10:50:16 +0800 CST

mysql group_concat 的问题,复杂的查询,没有得到所需的结果

  • 3

我有 5 张桌子

  • 大学
  • 贸易
  • 区
  • 接触
  • 录取

他们的关系是这样的

表关系

我的联系表有问题。在这个表中,cid 和 location 是主键。每个cid(即大学ID)只能有两个位置的校园和办公室。表摄入量连接大学和贸易表。通过下面的查询,我得到每个地址两次的结果。这是我的查询:

SELECT cname, ctype, tname, seats, hostel, new, dname, address, ph_no, email, website FROM college, trade, district, intake, contact WHERE intake.cid = college.cid and intake.tid = trade.tid and college.did = district.did and contact.cid = college.cid ORDER BY cname ASC;

我目前的结果: 我目前的结果

我想要的结果: 要求的结果

我知道这可以通过 grop_concat 和 concat 函数来实现,但我不知道在这种情况下如何使用这些函数。有人请帮助我构建查询以实现此结果。

谢谢你。

mysql group-concatenation
  • 3 个回答
  • 5163 Views
Martin Hope
jogesh_pi
Asked: 2013-05-02 01:02:25 +0800 CST

加入两个 group_concat 结果

  • 2

这是查询:

$sql = "select pn.id, pn.purchased_number, pn.plan, pn.ring_to_group, 
        count(rtg.id) as totalGroups, 
        concat_ws(',', group_concat(rtg.group_name), group_concat(rtg.id)) as groupList
           from tbl_phone_numbers as pn
           left join tbl_rings_to_groups as rtg on rtg.user_id=pn.user_id
           where pn.user_id = ? and pn.status = ?";
$query = $this->db->query($sql, array($this->userId, 'Y'));

返回groupList喜欢的结果,default,demo,1,2但我想得到类似的结果:

default:1,demo:2

在MYSQL有什么建议吗??

mysql group-concatenation
  • 1 个回答
  • 1431 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目

    • 12 个回答
  • Marko Smith

    如何让sqlplus的输出出现在一行中?

    • 3 个回答
  • Marko Smith

    选择具有最大日期或最晚日期的日期

    • 3 个回答
  • Marko Smith

    如何列出 PostgreSQL 中的所有模式?

    • 4 个回答
  • Marko Smith

    列出指定表的所有列

    • 5 个回答
  • Marko Smith

    如何在不修改我自己的 tnsnames.ora 的情况下使用 sqlplus 连接到位于另一台主机上的 Oracle 数据库

    • 4 个回答
  • Marko Smith

    你如何mysqldump特定的表?

    • 4 个回答
  • Marko Smith

    使用 psql 列出数据库权限

    • 10 个回答
  • Marko Smith

    如何从 PostgreSQL 中的选择查询中将值插入表中?

    • 4 个回答
  • Marko Smith

    如何使用 psql 列出所有数据库和表?

    • 7 个回答
  • Martin Hope
    Jin 连接到 PostgreSQL 服务器:致命:主机没有 pg_hba.conf 条目 2014-12-02 02:54:58 +0800 CST
  • Martin Hope
    Stéphane 如何列出 PostgreSQL 中的所有模式? 2013-04-16 11:19:16 +0800 CST
  • Martin Hope
    Mike Walsh 为什么事务日志不断增长或空间不足? 2012-12-05 18:11:22 +0800 CST
  • Martin Hope
    Stephane Rolland 列出指定表的所有列 2012-08-14 04:44:44 +0800 CST
  • Martin Hope
    haxney MySQL 能否合理地对数十亿行执行查询? 2012-07-03 11:36:13 +0800 CST
  • Martin Hope
    qazwsx 如何监控大型 .sql 文件的导入进度? 2012-05-03 08:54:41 +0800 CST
  • Martin Hope
    markdorison 你如何mysqldump特定的表? 2011-12-17 12:39:37 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 对 SQL 查询进行计时? 2011-06-04 02:22:54 +0800 CST
  • Martin Hope
    Jonas 如何从 PostgreSQL 中的选择查询中将值插入表中? 2011-05-28 00:33:05 +0800 CST
  • Martin Hope
    Jonas 如何使用 psql 列出所有数据库和表? 2011-02-18 00:45:49 +0800 CST

热门标签

sql-server mysql postgresql sql-server-2014 sql-server-2016 oracle sql-server-2008 database-design query-performance sql-server-2017

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve