sql - 根据某些列值复制行?

标签 sql mysql

假设我有一个表“users”,其中包含“user_id”、“name”和“multiplier”。

如果我进行基本选择,我会为每个用户获取一行:

SELECT * FROM users

我现在想做的是为每个用户获取mutiplier行。因此,如果我说表中的两个用户的这些值

(1, 'user1', 1)
(2, 'user2', 6)

我想要得到的是一个返回 7 行的选择(1 x user1 和 6 x user2)

我意识到这在客户端很容易做到,但这将是一个更大的查询的一部分,我无法承担在客户端上发送受影响的数千行然后进行乘法和排序以及每个接下来我要用它做其他事情...

感谢任何可以提供帮助的人

最佳答案

我认为你最好发布你想要解决的全部问题,因为可能有比你想要做的更干净的方法,但是下面的代码应该可以满足你的需要。我在这里使用数字表。您可以将其创建为表变量、永久表或临时表,但想法保持不变:

SELECT
     U.user_id,
     U.name,
     U.multiplier
FROM
     Users AS U
INNER JOIN Numbers AS N ON
     N.number BETWEEN 1 AND U.multiplier

关于sql - 根据某些列值复制行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1883362/

相关文章:

mysql - PostgreSQL 中 varchar 类型的等价物是什么?

mysql - 如果 SELECT 中存在 NULL 列,则删除不同的行

sql - 使用 ROWNUM 在 Oracle 中获取质数记录

SQL - 将一列复制到另一列

sql - 没有 CTE 的 Postgres/PADB 中的递归自查询

php - 如何使用 php 运行 ftp 服务器?

mysql - DATE_FORMAT 没有在 mysql 中选择我的格式

mysql - 我无法在 Virtual box 的 CDH 4.7 中启用 Mysql

mysql - 使用子选择查询两个数据库

php - 无限滚动一次加载所有项目?