2013-07-20 32 views
0

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

+0

SQLFiddle很好,但把你的表/數據結構放在這裏。 – hims056

+0

爲什麼要麻煩?..如果有任何問題,請告訴....不直接做nagative –

+0

@Michael Berkowski ....感謝編輯 –

回答

0
select owner_id from graph_owner order by owner_1d 
+0

你的答案是正確的,但可以你告訴我如何做到這一點,而不使用表名...只使用計數 –

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

相關問題