Я нашел много примеров PHP, которые используют map
и implode
, чтобы структурировать их строку ... Я использую Node и Javascript, и я думаю, что это может быть проблемой. У меня есть массив идентификаторов и я экономлю это так:MySQL выбирает значения из одной таблицы на основе массива идентификаторов из другой таблицы
[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 имеет только один. Столбец «идентификаторы» имеет тип TEXT в таблице 2. Проблема в том, что это только возврат строки с идентификатором 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(', ');
, и это не помогло. Какие-либо предложения?
y тег javascript? – Iceman
@Iceman, потому что я использую Node.js и изменяю значение с помощью Javascript перед его сохранением. – denikov
Первое предложение не хранит конкатенированные строки, которые вы хотите присоединить/использовать в запросе, как будто это создает боль! Затем, если вы собираетесь это сделать, в любом случае просмотрите методы разделенной строки, чтобы разделить строку на таблицу, а затем сделать соединение, а не в. Если вы не хотите делать разделяемую строку, вы можете подделать ее с помощью поиска подстановочных знаков, но это имеет огромные потенциальные проблемы, а затем вы также можете перейти по динамическому пути sql. Все методы предлагают Не хранить конкатенированные строки, если вы будете использовать их для целей, подобных этому. – Matt