當您在查詢中,如使用where ...凡在MySQL查詢
SELECT
ID, A, T
FROM `table1`
WHERE (A,T)
IN ($query)
有沒有辦法有結果相同的順序查詢?
因此,如果$查詢是( 「大衛瓦罐」, 「大瓦罐」),( 「安妮·史密斯」, 「我的生活」)
結果是有序
342 David Crock Big Crocks
12 Annie Smith My Life
當您在查詢中,如使用where ...凡在MySQL查詢
SELECT
ID, A, T
FROM `table1`
WHERE (A,T)
IN ($query)
有沒有辦法有結果相同的順序查詢?
因此,如果$查詢是( 「大衛瓦罐」, 「大瓦罐」),( 「安妮·史密斯」, 「我的生活」)
結果是有序
342 David Crock Big Crocks
12 Annie Smith My Life
通常你必須在應用程序層進行映射,這是唯一擁有所有相關信息的地方。可以使用TEMPORARY
表以正確的順序排序,但最好避免這種情況。
是的 - 這是映射,一直讓我絆倒。我有一個php數組記錄,我與選擇數據匹配,但重音破壞的東西。如果我選擇了「Monae」並且「Monãe」在桌上,它會打。然後,「Monãe」在我的應用程序中不會與「Monae」相匹配,因此失敗。 – Shaun
你想讓它們匹配還是不匹配? – tadman
兩種情況 - 我希望它們在人們使用應用程序時匹配,即Monae會打擊Monãe等,但我不希望它們在創建記錄時匹配,因爲我需要單獨記錄Monãe和Monae - 所以我可以查詢數據庫以獲取記錄的標識以供進一步解析。目前,如果Monãe在那裏,Monae將不會被創建,Monãe的id和行數據會被檢索,而當我的上傳腳本在php數組中尋找Monãe來追加id時,它無法找到它(Monae在陣列中)。我有一個PHP解決方法,但寧願在數據庫級別處理它。 – Shaun
如果$ query是一個SELECT語句,則改爲連接。
如果它是一組文字值然後要麼將它們插入到一些排序的臨時表,如自動遞增的ID,做一個加盟+訂單或...
SELECT
ID, A, T
FROM `table1`
WHERE A
IN ('David Crock', 'Annie Smith')
ORDER BY LOCATE(A, 'David Crock,Annie Smith');
(對不起 - 我之前沒有遇到多值'IN'語句,因此不確定它是如何工作的嗎?它是否工作?)
謝謝你們。是的symcbean - 多值IN語句非常好。我的應用程序一次最多可選擇5000條記錄 - 我發現這是選擇多個特定記錄的最快方式。 – Shaun
有'ORDER BY'子句,但一般來說,數據庫並不能保證它們'將保留數據插入的順序,除非您採取措施添加一些元數據以指示自己排序。 –
很可能它會從第一個主鍵到最後一個從頂部向下搜索。所以如果你的主鍵是ID,它可能會以這種方式顯示結果。我認爲,正如@MarcB B所說,使用order by是控制排序的最佳方法。 –