生成一个等于表中行数的列表

时间:2013-07-20 11:24:21

标签: mysql sql

我有7行的表;我想要一个查询,它将返回第二个查询中显示的值,使用表中的总行数,而不使用表名。

CREATE TABLE IF NOT EXISTS `graph_owner` (
  `owner_id` int(5) NOT NULL AUTO_INCREMENT,
  `owner_name` varchar(256) COLLATE utf8_unicode_ci NOT NULL,

  PRIMARY KEY (`owner_id`)
 
);
INSERT INTO `graph_owner` (`owner_id`, `owner_name`) VALUES
(1, 'test1'),
(2, 'test2'),
(3, 'test3'),
(4, 'test4'),
(5, 'test5'),
(6, 'test6'),
(7, 'test6');


SELECT *
FROM (
    SELECT 1 AS id
    UNION SELECT 2
    UNION SELECT 3
    UNION SELECT 4
    UNION SELECT 5
    UNION SELECT 6
    UNION SELECT 7
) AS t

SQL Fiddle

2 个答案:

答案 0 :(得分:0)

select owner_id from graph_owner order by owner_1d

答案 1 :(得分:0)

我会假设你并不是真的想在不使用表名的情况下这样做,因为即使你知道这是不可能的。因此,我认为你的确意味着你不想选择列的内容。您可以为行编号:

select `graph_owner`.*,
(@rowNumber := @rowNumber + 1) rowNumber
from `graph_owner`, (select @rowNumber := 0) r

如果您只想要没有表格内容的数字:

select (@rowNumber := @rowNumber + 1) rowNumber
from `graph_owner`, (select @rowNumber := 0) r;

这是一个更新的小提琴,我将主键更改为不连续:http://sqlfiddle.com/#!2/703fe/4