簡體   English   中英

MySQL根據另一個表中的ID數組從一個表中選擇值

[英]MySQL select values from one table based on array of ids from another table

我發現了許多使用mapimplode構造其字符串的PHP示例...我正在使用Node和Javascript,我認為這可能是問題所在。 我有一個ID數組,並像這樣保存它:

[1, 2, 3, 4].join();

正在存儲,我正在嘗試運行查詢:

SELECT sr.id, sr.name, sr.city FROM table1 AS sr 
JOIN table2 AS st WHERE sr.city = st.city AND sr.id IN (st.ids);

因此,兩個表都有一個列城市,table2有多個記錄,table1只有一個。 在表2中,“ ids”列的類型為TEXT。 問題是它只返回ID為1的行。如果我這樣做:

SELECT sr.id, sr.name, sr.city FROM table1 AS sr 
JOIN table2 AS st WHERE sr.city = st.city AND sr.id IN (1,2);

我將獲得第1行和第2行。是什么引起問題? 我嘗試了[1, 2, 3, 4].join(', '); 那沒有幫助。 有什么建議么?

我正在使用MySQL v5.7,因此我可以訪問JSON函數...我應該首先使用它。 我想要的解決方案是:

SELECT sr.id, sr.name, sr.city FROM table1 AS sr 
JOIN table2 AS st WHERE sr.city = st.city AND 
JSON_SEARCH(st.ids, 'one', sr.id) IS NOT NULL;

喜歡新的JSON支持功能...盡管有一些警告。 例如,數組中的ID必須是字符串,而ID不能是int JSON_SEARCH一直為ID的路徑返回NULL ,直到將其轉換為字符串為止。 反復試驗...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM