我有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
答案 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