我试图将所有 id 选择到一列中并用逗号分隔 ,
我的数据列:
+---+--------+--------------+
|id |somedata|someother data|
+---+--------+--------------+
|1 |data1 |other1 |
+---+--------+--------------+
|2 |data2 |other2 |
+---+--------+--------------+
|3 |data3 |other3 |
+---+--------+--------------+
Run Code Online (Sandbox Code Playgroud)
我试图做出的结果:
+-------+
|id list|
+-------+
|1, 2, 3|
+-------+
Run Code Online (Sandbox Code Playgroud)
结果应该是名为“id list”的 1 列中的 ID 列表。
问题是,这可能吗?如何?我尝试搜索关键字sql query select into list和其他关键字,但没有运气。
但是这个查询是在一个嵌套的选择上。
我可以使用分组记录的数量对记录进行分组,如下所示:
@cars = Car.group(:manufacturer).select("id, manufacturer, COUNT(id) AS total_count)
Run Code Online (Sandbox Code Playgroud)
输出将是这样的;
Porsche - 5
Renault - 3
Mercedes - 1
Audi - 2
Run Code Online (Sandbox Code Playgroud)
我现在正试图弄清楚如何获得分组记录(他们的 ID)的列表 - 就像保时捷一样,我想知道 5 个分组的汽车(他们的 ID)。有没有办法做到这一点 - 理想情况下使用 MySQL(在select文章中)?
我有一个值看起来像这样的表。
Id Name Fruit
------------
1 Jon Apple
------------
2 Jon Orange
------------
3 Jon Grape
------------
4 Mike Apple
------------
5 Mike Orange
-------------
Run Code Online (Sandbox Code Playgroud)
如何在 mysql 中将列区分为这样的内容?
Name Fruit
----------
Jon Apple
Orange
Grape
-----------
Mike Apple
Orange
-----------
Run Code Online (Sandbox Code Playgroud) SELECT *,
Group_concat(rating) AS rating_total,
Sum(rating_total) AS rating_sum,
Avg(rating_sum) AS rating_avg
FROM ratings
GROUP BY pid
Run Code Online (Sandbox Code Playgroud)
由于某种原因,总和和平均值不执行....你如何使这个陈述有效?
真的希望有人可以帮我这个!我有6张桌子:
产品
十足
Prodequipment
prodid
equipclassmain
equipclassor
装备类
classid
Equipfunctions
equipid
的classid
设备
equipid
Workshopequipment
workshopid
equipid
产品 -一些产品列表
设备 -一些设备清单
Prodequipment -做一个产品所需要的设备清单.您可以使用equipclassmain中列出的设备,也可以使用equipclassor中的设备进行更换.表格产品与表格设备有一对多关系,即您将使用许多不同的工具(设备)来生产一种产品,但您可以选择使用对象equipclassmain/equipclassor中的任何人.例如,为了拍摄照片,您可以使用木制框架或塑料框架(一对)和盖玻片或盖塑料(第二对).您可以根据需要组合使用,但应使用两对:带盖玻璃的木框或带盖玻璃的塑料框架或带塑料盖的木框或带塑料盖的塑料框架.
设备功能和设备 - 由于一件设备可以以不同的方式使用,因此它不直接与工作台设备相关联.我已经创建了table Equipclasses,其中列出了所有可能设备的所有单一用途,并且我列出了每台设备的单一用途的设备功能.
Workshopequipment - 列出他们正在使用的工作室和设备.
现在我需要一个可以由两个不同的给定车间制造的产品清单(比如workshopid = 1和workshopid = 4),即这两个车间都有生产这些产品所需的所有设备.请记住,如上所述,那些工作台不必使用相同的设备.
我正在尝试这个查询:
SELECT prodid FROM Products JOIN (
SELECT workshopid, prodlist, equipclassmain, equipclassor,
if( LOCATE( equipclassmain, prodlist ) >0
AND LOCATE( equipclassor, prodlist ) >0, 1, 0 ) AS pairstatus FROM Prodequipment JOIN
(
SELECT classid FROM Equipclasses JOIN (
SELECT classid FROM Equipfunctions …Run Code Online (Sandbox Code Playgroud) 我不知道为什么它不起作用.
"SELECT id GROUP_CONCAT(skill SEPARATOR ', ') FROM resume_skills GROUP BY id";
Run Code Online (Sandbox Code Playgroud)
我有一个表resume_skills,然后有两个字段id和技能.它返回一个像这样的错误:
ERROR: 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_CONCAT(skill SEPARATOR ', ') FROM resume_skills GROUP BY id' at line 1
Run Code Online (Sandbox Code Playgroud)
我还没搞清楚.救命?
我有表(mysql 5.5 INNODB):样本小数据+剪切不相关列的问题 - 真实数据巨大(会议表中超过10,000,000行)
INPUT:
day:
day_id(primary key)|sunday|monday|tuesday|wensday|thursday|friday|saturday
---------------------------------------------------------------------------
60 |1 |1 |1 |1 |1 |1 |1
74 |0 |1 |0 |0 |0 |0 |0
98 |0 |0 |0 |0 |0 |0 |0
..etc......................................................................
meeting:
day_id(foreign key)|time |type
----------------------------------
60 |20:09:00|1
98 |07:00:00|1
74 |22:01:00|4
98 |10:00:00|1
60 |23:09:00|2
98 |06:00:00|2
74 |21:04:00|6
98 |08:00:00|6
.....etc.....................
Run Code Online (Sandbox Code Playgroud)
OUTPUT:
sunday_times |monday_times |....etc
-------------------------------------------------------------------------------------------------
20:09:00,etc... | 20:09:00,etc.. |
................etc..............................................................................
Run Code Online (Sandbox Code Playgroud)
我觉得这样的事情(但我是新的sql soo我不知道它是好的还是合法的)
SELECT
GROUP_CONCAT(time where day.sunday=1 ORDER BY time) as sunday_times,
GROUP_CONCAT(time where …Run Code Online (Sandbox Code Playgroud) 我正在尝试GROUP_CONCAT以下查询返回的结果:
SELECT
CONCAT(p.product_name, " (", SUM(bp.quantity), ")") AS products
FROM product p
INNER JOIN booking_products bp ON p.product_id = bp.product_id
GROUP BY p.product_id
Run Code Online (Sandbox Code Playgroud)
此查询返回以下内容:
------------
| products |
------------
Shampoo (3)
Advil (1)
Dry Shampoo (4)
Cepacol (5)
Run Code Online (Sandbox Code Playgroud)
当我尝试运行下面的查询时,我收到一个错误:"#1111 - 无效使用组功能".这有什么问题?
SELECT
GROUP_CONCAT(
CONCAT(p.product_name, " (", SUM(bp.quantity), ")")
SEPARATOR ", "
) AS products
FROM product p
INNER JOIN booking_products bp ON p.product_id = bp.product_i
GROUP BY p.product_id
Run Code Online (Sandbox Code Playgroud)
当然应该回归:
Shampoo (3), Advil (1), Dry Shampoo (4), Cepacol (5)
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
我尝试找到一种使用 Postgres 连接 JSONB 值的方法。
例如我有两行:
INSERT INTO "testConcat" ("id", "json_data", "groupID")
VALUES (1, {"name": "JSON_name1", "value" : "Toto"}, 5);
INSERT INTO "testConcat" ("id", "json_data", "groupID")
VALUES (2, {"name": "JSON_name2"}, 5);
Run Code Online (Sandbox Code Playgroud)
我想做类似的事情:
SELECT GROUP_CONCAT(json_data)
FROM testConcat
GROUP BY groupID
Run Code Online (Sandbox Code Playgroud)
并且作为获得类似结果的结果:
[{"name": "JSON_name1", "value": "Toto"}, {"name": "JSON_name2"}]
Run Code Online (Sandbox Code Playgroud)
我尝试创建聚合函数,但是当 JSON 中有相同的键时,它们会被合并并且只保留最后一个值:
DROP AGGREGATE IF EXISTS jsonb_merge(jsonb);
CREATE AGGREGATE jsonb_merge(jsonb) (
SFUNC = jsonb_concat(jsonb, jsonb),
STYPE = jsonb,
INITCOND = '{}'
);
Run Code Online (Sandbox Code Playgroud)
当我在这里使用此功能时:
SELECT jsonb_merge(json_data)
FROM testConcat
GROUP BY groupID
Run Code Online (Sandbox Code Playgroud)
结果是:
{"name": "JSON_name2", …Run Code Online (Sandbox Code Playgroud) group-concat ×9
mysql ×8
sql ×4
activerecord ×1
aggregate ×1
average ×1
concat ×1
join ×1
jsonb ×1
locate ×1
php ×1
postgresql ×1
ruby ×1
select ×1
sum ×1