[英]MySQL select values from one table based on array of ids from another table
我發現了許多使用map
和implode
構造其字符串的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.