gpt4 book ai didi

php - 从其他行创建一行

转载 作者:行者123 更新时间:2023-11-29 14:37:39 26 4
gpt4 key购买 nike

我遇到了问题。我的表中的数据如下所示:

route_id    route_short_name    route_long_name

AOUT1112E 12 Direction Pont-Viau
AOUT1112O 12 Direction Métro Cartier
JANV1212E 12 Direction Pont-Viau
JANV1212O 12 Direction Métro Cartier
JRAN1212E 12 Direction Pont-Viau
JRAN1212O 12 Direction Métro Cartier

我需要这样的结果:

12 - 方向 Pont-Viau/方向 Métro Cartier

或者

12 - 方向 Pont-Viau/Métro Cartier

我认为我可以使用两个数组,但我想在 MySQL 中这样做。另外,我在表中还有其他路线,如路线 13、15 等,因此它需要在 SELECT ALL 中工作有人知道吗?

非常感谢

最佳答案

要组合两个字符串,请使用CONCAT()。要将值加入组中,请使用 GROUP_CONCAT

SELECT 
*,
CONCAT(
route_short_name,
" - ",
GROUP_CONCAT(route_long_name SEPARATOR ' / ')
) AS route_name
FROM
...
GROUP BY
route_short_name

它会返回类似这样的内容:

SHORTNAME - LONGNAME1 / LONGNAME2 / LONGNAME3

上面的代码只会为每个 route_short_name 返回一行。要获取全部内容,请使用子查询:

SELECT *, (
SELECT CONCAT(
route_short_name,
" - ",
GROUP_CONCAT(route_long_name.b SEPARATOR " / "))
FROM
your_table_name AS your_table_name_inner
WHERE
your_table_name_inner.route_short_name = your_table_name_outer.short_name
GROUP BY
your_table_name.route_short_name
) AS route_name
FROM
your_table_name AS your_table_name_outer

子查询与第​​一个示例几乎相同,只是它始终返回格式为 SHORTNAME - LONGNAME1/LONGNAME2/etc 的单行。外部查询返回所有记录,对于每条记录,都会执行子查询。不用说,这是一个比第一个示例更繁重的查询。

<小时/>

经过仔细检查,似乎 route_short_name 实际上与数据库结构完全无关,这与我的假设不同。

我留下了上面的答案,因为它可能对其他人有帮助。

如果我理解正确的话,您想要连接两条(不多也不少)记录,其中一条记录的 route_idE 结尾,另一条记录以 O

假设如下:

  • ID 始终为 8 个字符 + EO
  • 总有两条记录属于同一组。

在这种情况下:

SELECT 
*,
CONCAT(a.route_short_name, ' - ', a.route_long_name, ' / ', b.route_long_name)
FROM
your_table_name AS a
JOIN
your_table_name AS b
ON
LEFT(a.route_id, 8) = LEFT(b.route_id, 8)
AND
a.route_id != b.route_id

这会执行以下操作:

  1. 返回短名称、破折号、长名称 1、斜线、长名称 2。
  2. 根据 ID 的前 8 个字符进行连接(LEFT(str, n) 返回字符串的前 n 个字符)。
  3. ID 可能不完全匹配(这会阻止与其自身连接)。

这可能会相当慢(由于使用LEFT()),但 MySQL 可能有一些优化事物的黑魔法,索引也可能有所帮助。在您的真实桌面上对其进行基准测试。

关于php - 从其他行创建一行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8670011/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com