对于具有0到9之间值的单个列表,我有以下代码:
create table number(
value int
)
truncate table number
insert into number values(0);
insert into number values(1);
insert into number values(2);
insert into number values(3);
insert into number values(4);
insert into number values(5);
insert into number values(6);
insert into number values(7);
insert into number values(8);
insert into number values(9);
我想要的是一个查询,它应该在不使用concat
(或任何内置函数)函数的情况下连接数字,并以表格形式给出以下输出:
0
1
2
3
4
5
6
7
8
9
10
11
12
13
14
.
.
.
.
.
999
过去5天真的很难做到这一点。需要真诚的帮助。
答案 0 :(得分:4)
您可以使用CROSS JOIN
和简单的数学公式:
SELECT [num] = n1.value * 100 + n2.value * 10 + n3.value
FROM number n1, number n2, number n3
ORDER BY num
的 LiveDemo
强>
输出:
╔═════╗
║ num ║
╠═════╣
║ 0 ║
║ 1 ║
║ 2 ║
║ 3 ║
║ 4 ║
║ 5 ║
║ 6 ║
║ 7 ║
║ ... ║
║ 999 ║
╚═════╝
修改强>
交叉联接将返回记录(元组)(0,0,0), (0,0,1),(0,0,2), ...,(9,9,9)
,然后您需要应用Positional Number System formula
:
示例:
来自https://en.wikipedia.org/wiki/Positional_notation 的 图片
╔════════════╦═══════════╦══════════╦════════════════════╗
║ 10^2 = 100 ║ 10^1 = 10 ║ 10^0 = 1 ║ num ║
╠════════════╬═══════════╬══════════╬════════════════════╣
║ 0 * 100 ║ 0 * 10 ║ 0 * 1 ║ 0 + 0 + 0 = 0 ║
║ 0 * 100 ║ 0 * 10 ║ 1 * 1 ║ 0 + 0 + 1 = 1 ║
║ 0 * 100 ║ 0 * 10 ║ 2 * 1 ║ 0 + 0 + 2 = 2 ║
║ ... ║ ... ║ ... ║ ... ║
║ 9 * 100 ║ 9 * 10 ║ 9 * 1 ║ 900 + 90 + 9 = 999 ║
╚════════════╩═══════════╩══════════╩════════════════════╝
答案 1 :(得分:0)
虽然@ lad2025查询基于某个公式是好的。它使用3个交叉连接。
更简单的方法(不确定,如果这是最好的)
$fields = array();
$values = array();
foreach($_POST as $key => $value){
array_push($fields, $key);
array_push($values, $value);
}
$sql = "INSERT INTO table (".implode(", ", $fields).") VALUES (".implode(", ", $values).")"
mysql_query($sql);