gpt4 book ai didi

sql - 将单行扩展为多行

转载 作者:行者123 更新时间:2023-12-03 18:35:31 24 4
gpt4 key购买 nike

以下是两列表的示例,我使用按位运算符存储日期。

-- +---------+------+
-- | Title | Days |
-- +---------+------+
-- | Title 1 | 127 |
-- | Title 2 | 12 |
-- | Title 3 | 8 |
-- | Title 4 | 36 |
-- +---------+------+


我想要的是进行查询并扩展每一行,因此将根据天数进行重复,并且每一行仅包含一天。

-- +---------+------+
-- | Title | Days |
-- +---------+------+
-- | Title 1 | 1 |
-- | Title 1 | 2 |
-- | Title 1 | 4 |
-- | Title 2 | 4 |
-- | Title 4 | 4 |
-- | Title 1 | 8 |
-- | Title 2 | 8 |
-- | Title 3 | 8 |
-- | Title 1 | 16 |
-- | Title 1 | 32 |
-- | Title 4 | 32 |
-- | Title 1 | 64 |
-- +---------+------+


通过使应用程序多次查询数据库以检索每天的行,我已经有了解决方法。

SELECT * FROM `table_name` WHERE ( `days` & 1 ) = 1; -- ... and so on


但是我想如果可以在单个查询中做到这一点,就可以提高性能。

最佳答案

您可以只加入要扩展的位掩码之间使用UNION ALL构造的常量表;

SELECT a.title, b.value days
FROM mytable a
JOIN (SELECT 1 value UNION ALL SELECT 2 UNION ALL SELECT 4 UNION ALL
SELECT 8 UNION ALL SELECT 16 UNION ALL SELECT 32 UNION ALL SELECT 64) b
ON a.days & b.value
ORDER BY title, b.value


An SQLfiddle to test with

关于sql - 将单行扩展为多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26210877/

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