以下说明了我的问题。
SELECT field
FROM myTable
WHERE field1 = 'abc' AND filed2 = 'xyz' AND field3 = 'pqr'
ORDER BY field4 ASC
此查询的结果为:
result1
result2
result3
现在,如果我运行以下查询,那么
SELECT field
FROM myTable
WHERE field1 = 'xxx' AND field2 = 'xyz'
ORDER BY field4 ASC
result2
result3
result1
因此,基本上两个查询都会给出相同的结果,但顺序不同。但我希望第一个查询的结果与第二个查询ORDER BY
。看到两者在field1
上有不同的条件。其他一切都是一样的。
答案 0 :(得分:3)
这没有任何问题。
2查询返回不同的行(第一个使用field1 ='abc',第二个使用'xxx'),那么为什么这两个结果集应该相关呢?
以下是一个例子:
declare @myTable table (field varchar(100),
field1 varchar(100),
field2 varchar(100),
field3 varchar(100),
field4 int);
insert into @myTable (field, field1, field2, field3, field4)
values ('result1', 'abc', 'xyz', 'pqr',1),
('result2', 'abc', 'xyz', 'pqr',2),
('result3', 'abc', 'xyz', 'pqr',3);
insert into @myTable (field, field1, field2, field4)
values
('result2', 'xxx', 'xyz',1),
('result3', 'xxx', 'xyz',2),
('result1', 'xxx', 'xyz',3);
SELECT field
FROM @myTable
WHERE field1 = 'abc' AND field2 = 'xyz' AND field3 = 'pqr'
ORDER BY field4 ASC
--result1
--result2
--result3
SELECT field
FROM @myTable
WHERE field1 = 'xxx' AND field2 = 'xyz'
ORDER BY field4 ASC
--result2
--result3
--result1
答案 1 :(得分:0)
您可以将第二个语句的子查询添加到第一个中,如下所示,并按顺序排列。
SELECT t1.field,
(SELECT top 1 t2.field4
FROM myTable t2
WHERE t2.field1 = 'xxx' AND t2.field2 = 'xyz'
AND t2.field = t1.field) as orderField
FROM myTable t1
WHERE t1.field1 = 'abc' AND t1.filed2 = 'xyz' AND t1.field3 = 'pqr'
ORDER BY orderField ASC