我有一个像下面这样的MySQL表。
ID NAME SURNAME
1 Joe Black
2 Mary Peterson
3 Bob Marley
4 Andy Murray
...
我想写一个 SELECT 命令,它会返回 N 次的每一行。
N = 3的例子。
SELECT NAME, SURNAME blah-blah (3 Times ) FROM Person
NAME SURNAME
Joe Black
Joe Black
Joe Black
Mary Peterson
Mary Peterson
Mary Peterson
Bob Marley
Bob Marley
Bob Marley
Andy Murray
Andy Murray
谢谢。
答案 0 :(得分:2)
您可以使用UNION ALL
来获得所需的结果,但最好不要使用SQL做这样的工作。
SELECT * FROM
(
SELECT NAME, SURNAME FROM Person
UNION ALL
SELECT NAME, SURNAME FROM Person
UNION ALL
SELECT NAME, SURNAME FROM Person
) A ORDER BY NAME
答案 1 :(得分:1)
愚蠢的手动方式是:
SELECT NAME, SURNAME FROM Person
UNION ALL
SELECT NAME, SURNAME FROM Person
UNION ALL
SELECT NAME, SURNAME FROM Person
另一种方法是让一个包含数字的表格在一个列中运行到最大值并与它进行交叉连接WHERE number <= n
答案 2 :(得分:1)
我不建议使用sql来实现这个目标,这是一种更简单的方式(假设PHP ):
$result = $mysqli->query("SELECT NAME, SURNAME blah-blah (3 Times ) FROM Person");
while($result_set = $result->fetch_array())
{
for($i=0;$i<4;$i++)
{
echo $result_set['name']." ".$result_set['sur_name']."\n";
}
}
这将为您提供更好地控制结果集,并且您可以拥有更多动态处理方式,数据在页面上的显示方式,
作为。例如,如果你想要一个特定的名字只打印一次,那么简单的if
比较会做,这是不可能通过sql !!
答案 3 :(得分:1)
SELECT NAME, SURNAME FROM Person, (SELECT * FROM Person limit 3) count_table;
答案 4 :(得分:1)
如何在存储过程中循环它,如:
delimiter //
CREATE PROCEDURE ntimes()
BEGIN
DECLARE i INT DEFAULT 0;
SET i = 0;
WHILE i < 3 DO
SELECT `Code`, `Rank` FROM Table1;
SET i = i + 1;
END WHILE;
END;
//
DELIMITER ;
在这里你只需要改变3到你想要的重复次数,你就不需要大量的工会。