公司業務需求要做個列表的排序
而實際排序的字段不再本庫中,需要跨庫去拿到字段,因為是微服務體系架構,不可能Left join跨庫的表,所以決定調用一次跨服務的API拿到排序相關的對象,里面包含需要排序的列
一塊拿到sql中進行排序(因為order by比較方便。。。。)
然后開始出現了bug,我把跨服務拿到的對象存成List集合,需要在sql中左連接才能使用里面的字段,但是直接這樣寫就會出現bug:
ScheduleDictionary
left join
(select O.Id AS OrgId,O.`Code`,O.`Name` from #{param.orgModels} O)
AS Org on ScheduleDictionary.OrganizationId=Org.OrgId
bug的日志打印大約是這樣:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near'_binary'??\0♣sr\0‼java.util.ArrayListx??↔??a?♥\0☺I\0♦sizexp\0\0\0☻w♦\0\0\0t\0
google了一下,只有一個問題是跟這個相關的,所以決定記錄一下把,
問了下領導,這樣直接left join一個list集合是不行的,需要拆開:
拆開的辦法是使用union join 例如:select 1 as id,tt as name union join select 2 as id ,dd as name .....最后拼成一張表,
而我傳過去的是個List肯定要用foreach循環
就這樣就可以把它當作一張表去與主表連接了,
同樣也可以拿到 主鍵或者code去下面進行排序操作了,