g*****g 发帖数: 34805 | 1 【 以下文字转载自 Database 讨论区 】
发信人: goodbug (好虫), 信区: Database
标 题: 问个很挠头的简单问题
发信站: BBS 未名空间站 (Mon Dec 8 22:39:09 2014, 美东)
一个table两个column id, name。我有一堆id, 有duplicate,怎么才能把name顺序列
出来,包括重复的。 |
M*P 发帖数: 6456 | 2 不明白你具体要干啥。
不过这种情况我一般把两个column用一个特殊符号连起来然后sort之。
【在 g*****g 的大作中提到】 : 【 以下文字转载自 Database 讨论区 】 : 发信人: goodbug (好虫), 信区: Database : 标 题: 问个很挠头的简单问题 : 发信站: BBS 未名空间站 (Mon Dec 8 22:39:09 2014, 美东) : 一个table两个column id, name。我有一堆id, 有duplicate,怎么才能把name顺序列 : 出来,包括重复的。
|
g*****g 发帖数: 34805 | 3 比如说我有一个1万条数据的表,现在我有100个 id, 里面有重复,我要顺序把100个
name列出来。写个程序当然很简单,但sql能搞定不是更省事。
【在 M*P 的大作中提到】 : 不明白你具体要干啥。 : 不过这种情况我一般把两个column用一个特殊符号连起来然后sort之。
|
P****i 发帖数: 12972 | 4 select distinct name from table order by name
?
【在 g*****g 的大作中提到】 : 比如说我有一个1万条数据的表,现在我有100个 id, 里面有重复,我要顺序把100个 : name列出来。写个程序当然很简单,但sql能搞定不是更省事。
|
g*****g 发帖数: 34805 | 5 我不要排序,按着我的 id列表的 顺序,还要保留重复。
【在 P****i 的大作中提到】 : select distinct name from table order by name : ?
|
P****i 发帖数: 12972 | 6 举个简单的例子吧
【在 g*****g 的大作中提到】 : 我不要排序,按着我的 id列表的 顺序,还要保留重复。
|
g*****g 发帖数: 34805 | 7 Table
1 name1
2 name2
3 name3
Input 3, 2, 2
Output
3 name3
2 name2
2 name2
【在 P****i 的大作中提到】 : 举个简单的例子吧
|
M*P 发帖数: 6456 | 8 把第一个放hashtable里?
★ 发自iPhone App: ChineseWeb 7.8
【在 g*****g 的大作中提到】 : Table : 1 name1 : 2 name2 : 3 name3 : Input 3, 2, 2 : Output : 3 name3 : 2 name2 : 2 name2
|
w***g 发帖数: 5958 | 9 还是老实跑N个select吧。非要在一个select中写又不想用临时表的话就这样
MySQL:
select id, name from YourTable,
(select 3 as id, 1 as key
union all select 2, 2
union all select 2, 3) as tmp
where YourTable.id = tmp.id order by tmp.key;
SQLServer
select id, name from YourTable,
(values (3, 1) (2,2) (2,3) as (int, id)) as Tmp
...
这个语法我不怎么记得了。但是如果有key找不到的话不就对不上了?
【在 g*****g 的大作中提到】 : Table : 1 name1 : 2 name2 : 3 name3 : Input 3, 2, 2 : Output : 3 name3 : 2 name2 : 2 name2
|
P****i 发帖数: 12972 | 10 join一下就好了
【在 g*****g 的大作中提到】 : Table : 1 name1 : 2 name2 : 3 name3 : Input 3, 2, 2 : Output : 3 name3 : 2 name2 : 2 name2
|
|
|
g*****g 发帖数: 34805 | 11 我就是懒得写程序,要不然没啥难度不是。
【在 M*P 的大作中提到】 : 把第一个放hashtable里? : : ★ 发自iPhone App: ChineseWeb 7.8
|
N********n 发帖数: 8363 | 12
Load them into a new table w/ an extra incremental unique row Id.
Then run a query like this:
select * from newTable where inputId = id order by rowId
【在 g*****g 的大作中提到】 : 比如说我有一个1万条数据的表,现在我有100个 id, 里面有重复,我要顺序把100个 : name列出来。写个程序当然很简单,但sql能搞定不是更省事。
|
w***g 发帖数: 5958 | 13 如果id没有重复的话可以用下面的办法。
http://stackoverflow.com/questions/396748/ordering-by-the-order
有重复的话field也没用。
【在 g*****g 的大作中提到】 : Table : 1 name1 : 2 name2 : 3 name3 : Input 3, 2, 2 : Output : 3 name3 : 2 name2 : 2 name2
|
g*****g 发帖数: 34805 | 14 这倒是个办法,不知道能不能做select * from (list)做个临时表直接join,就省得建
表了。
【在 N********n 的大作中提到】 : : Load them into a new table w/ an extra incremental unique row Id. : Then run a query like this: : select * from newTable where inputId = id order by rowId
|
N********n 发帖数: 8363 | 15
There's a "row_number()" function that SqlServer & Oracle uses to
generate rowId for select results. It probably could do the work
but feels like a temporary inefficient hack.
Bottomline a table should not allow duplicates to exist so a long
term solution is still a properly designed table.
【在 g*****g 的大作中提到】 : 这倒是个办法,不知道能不能做select * from (list)做个临时表直接join,就省得建 : 表了。
|
w**z 发帖数: 8232 | 16 写个stored procedure
【在 g*****g 的大作中提到】 : 这倒是个办法,不知道能不能做select * from (list)做个临时表直接join,就省得建 : 表了。
|
r***y 发帖数: 4379 | 17 re
SP
【在 w**z 的大作中提到】 : 写个stored procedure
|
n*****t 发帖数: 22014 | 18 数据量小怎么瞎搞都无所谓,量大的话无聊 union 还是 sp 效率都太差,正确的做法
肯定是用 temp memory table 来 join
【在 w**z 的大作中提到】 : 写个stored procedure
|
h**********c 发帖数: 4120 | 19 select * from tablename sort by name
Dbase III learned twenty years ago. |
n*****t 发帖数: 22014 | 20 题目没看清
【在 h**********c 的大作中提到】 : select * from tablename sort by name : Dbase III learned twenty years ago.
|
|
|
w**z 发帖数: 8232 | 21 sp 和memory table 有矛盾吗?
【在 n*****t 的大作中提到】 : 数据量小怎么瞎搞都无所谓,量大的话无聊 union 还是 sp 效率都太差,正确的做法 : 肯定是用 temp memory table 来 join
|
n*****t 发帖数: 22014 | 22 SP 没有普通的 programming language 灵活,比如这个例子,你首先要把 input 都
insert into temp table,用 PHP 之类可以先组一个 values,一个 query 搞定了,
用 SP 基本只能一条条 insert 吧?
【在 w**z 的大作中提到】 : sp 和memory table 有矛盾吗?
|
g*****g 发帖数: 34805 | 23 我老人家就是想偷个懒,写个程序这个没有难度的。最后还是建个临时表, join一下完
了。 |