我是新來的SQL,任何一個可以請幫我從內部查詢得到有序的數據如何通過內部查詢來獲取訂單
select
*
from emp
where id
(select order from department where name = 'testing' order by order asc).
我從內部查詢,並與獲得訂單數據ID的我得到我應該從emp表中得到的結果是在內部查詢相同的順序。誰能幫我這個。 TIA。
我是新來的SQL,任何一個可以請幫我從內部查詢得到有序的數據如何通過內部查詢來獲取訂單
select
*
from emp
where id
(select order from department where name = 'testing' order by order asc).
我從內部查詢,並與獲得訂單數據ID的我得到我應該從emp表中得到的結果是在內部查詢相同的順序。誰能幫我這個。 TIA。
如果它是合理的,重新寫你的查詢作爲聯接:
select e.*
from emp e
inner join department d
on e.id = d.order
where d.name = 'testing'
order by d.order asc
在哪裏,這將改變你的結果是,如果有在department
多行具有相同order
值匹配emp
一行或多行 - 在這種情況下,這個查詢將返回多行,而原來不會。但是,如果這種情況不適用,那麼這是我建議的查詢。
不能保證有內部查詢的實際臨時表,並且它是以特定方式排序和處理的。但是,您可以通過emp.id對外部查詢進行排序。
select * from emp where id in
(select order from department where name = 'testing')
order by id asc
達米安的回答是相當酷和完美。但如果你還是想要去與子查詢那就試試這個
select *
from emp
where id in (select order from department where name = 'testing' order by order asc)
order by id asc
願這幫助你
謝謝! vikash-singh,但我想要訂單在部門的順序欄不是基於emp ID。那是不可想象的? – Vijay
然後使用** group by id **代替* by id *。 –
select e.* from emp as e, department d where e.id=d.order and d.name='testing' order by d.order
這會給行權數量的情況下,emp.id之間有超過1場比賽department.order
select * from emp e
where exists
(select 1 from department d where d.name = 'testing'
and e.id = d.order1) -- order is a reserved word in several sql languages
order by id
看起來你的桌子之間有一些有趣的事情發生。部門會包含任何關於emp的信息(我認爲它是員工表)?
我想你已經在'id'和'('之間放了一個'in',這樣可以更好地完成內部連接而不是子查詢 - 這是一個合理的改變嗎?唯一能確定性地確定查詢結果的順序是在最外面的SELECT語句中有一個ORDER BY。 –