1樓:周偉毅
不知道樓主資料庫是哪個。貌似不是oracle, oracle應該是這樣:
第乙個: select from_city, target_city,COUNT(1)
FROM train
WHERE passenger_name = '張三'
GROUP BY from_city, target_city第二個:select * from (
select * from target WHERE passenger_name = '張三' order by train_date desc
) where rownum = 1
2樓:霜楓
先說一下答案主的sql是錯的,原因是:樓主的sql的意思是只要存在找到目的地等於這個起始地的記錄,就認為是乙個往返。事實上乙個往返得滿足:
1.出發的時間得小於返回的時間。2.
乙個出發記錄只能匹配乙個返回記錄。3.乙個返回記錄只能匹配乙個出發記錄。。
然後我認為的正確的sql如下:
SELECT
COUNT(*)
FROM
( SELECT
*FROMSELECT
a.id AS id,
a.from_city AS startcity,a.target_city AS targetcity,a.
passenger_name AS pName,a.train_date AS startTime,b.train_date AS backTime,b.
id AS bid
FROM
train AS a
INNER JOIN train AS b ON a.from_city = b.target_city
AND a.passenger_name = b.passenger_name
AND a.train_date < b.train_dateGROUP BY
a.id
) tb
WHERE
tb.pName = '張三'
AND tb.startcity = '長沙'
GROUP BY
bid) tb2
如何優化一條 order by 的 SQL 語句?
cl jin 我不是個高手,但自認為看懂了這個問題,首先我來舉例說明一下為什麼會出現filesort。首先得了解索引在硬碟中的儲存狀態,復合索引的儲存是按照排列組合的順序排好的,city word user count 這種索引,他儲存的順序你可以抽象的理解為 acity,aword,auser c...
怎樣去挽回一段感情?
Anny 你好相處兩年,對方提出分手,原因是你不夠成熟,幼稚 這兩年你們經歷一些事情,各自都發生了改變,對自己的要求,對伴侶的需求同樣也會發生改變 女生說男朋友幼稚,一般指的是男朋友情商比較低,缺乏責任心,看事情比較片面等 但每個人都有幼稚的方面,女朋友因為這個原因和你提出分手,是因為你 幼稚 的方...
怎樣再開始一段感情?
肩頭軟貓 結婚不是一段感情的結束,而是重新開始審視你們的感情。分開了不可怕,離婚了也不要悲觀。你心裡清楚,時間可以抹去你曾經掉下的淚水。你以為你永遠不會忘記的人,可是在很多年以後,你甚至已經是記不起為什麼當初是那麼的恨他。 如果你需要思考怎樣才能再開始一段感情,才能開始一段感情,那麼你就不應該開始一...