sql选择以特定记录开始
有什么方法可以从特定记录开始写入选择记录吗?假设我有以下数据表:sql选择以特定记录开始
SNO ID ISSUE
----------------------
1 A1 unknown
2 A2 some_issue
3 A1 unknown2
4 B1 some_issue2
5 B3 ISSUE4
6 B1 ISSUE4
我可以写一个选择开始显示开始B1,然后剩余的记录记录?输出应该是这样的:
4 B1 some_issue2
6 B1 ISSUE4
1 A1 unknown
2 A2 some_issue
3 A1 unknown2
5 B3 ISSUE4
如果B3是最后一个,不要紧,只要B1应该首先显示。
夫妇的取决于你有什么不同的选择“知道”的时间提前(即你想成为第一个记载,SNO等的id):
联盟的做法:
select 1 as sortOrder, SNO, ID, ISSUE
from tableName
where ID = 'B1'
union all
select 2 as sortOrder, SNO, ID, ISSUE
from tableName
where ID <> 'B1'
order by sortOrder;
为了
案例声明:
select SNO, ID, ISSUE
from tableName
order by case when ID = 'B1' then 1 else 2 end;
你也可以考虑使用临时表,CTE的等,但这些方法会可能性能更低......在您的环境中尝试几种不同的方法,以查看哪种方法效果最佳。
开头非常感谢。我正在寻找案例的方法。 – JPro 2009-12-02 19:28:08
select * from table1
where id = 'B1'
union all
select * from table1
where id <> 'B1'
为什么这个答案是-1? – JPro 2009-12-02 19:29:27
不确定(即我没有投票),但我会认为这可能是因为要保证排序顺序,你需要添加一个“order by”子句(即这个查询将有可能返回数据任何订单)。不确定这是否值得下注,尤其是没有评论,但这是我的猜测。 – chadhoc 2009-12-02 20:09:24
人们可能只是在“玩游戏”(向其他人投票以让他们的位置更好) – BlackTigerX 2009-12-02 23:08:34
假设你正在使用MySQL,你既可以IF()在使用ORDER BY子句...
SELECT SNO, ID, ISSUE FROM table ORDER BY IF(ID = 'B1', 0, 1);
...或者你可以定义强加你的排序顺序的功能。 ..
DELIMITER $$
CREATE FUNCTION my_sort_order(ID VARCHAR(2), EXPECTED VARCHAR(2))
RETURNS INT
BEGIN
RETURN IF(ID = EXPECTED, 0, 1);
END$$
DELIMITER ;
SELECT SNO, ID, ISSUE FROM table ORDER BY my_sort_sort(ID, 'B1');
你如何确定哪个“价值”应该优先?体重,个人选择? – 2009-12-02 19:16:28
这是什么数据库? MySQL的? – 2009-12-02 19:16:32
它的MySQL @astander:ID应该以B1 – JPro 2009-12-02 19:18:47