0
我发现了许多使用map
和implode
来构造它们的字符串的PHP示例......我使用Node和Javascript,我认为这可能是问题所在。我有一组ID,我保存它是这样的:MySQL从一个表中选择基于来自另一个表的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(', ');
,这并没有帮助。有什么建议么?
y javascript标记? – Iceman
@Iceman因为我在使用Node.js并在保存之前使用Javascript修改了值 – denikov
第一个建议不会存储想要加入/使用查询的连接字符串,因为这会让事情变得很痛苦!接下来,如果你打算这样做,请查看拆分字符串方法,以便将字符串拆分为表格,然后进行连接而不是进入。如果您不想拆分字符串,可以使用一些通配符搜索来伪装它,但是有巨大的潜在问题,然后你也可以去动态SQL路径。所有的方法建议不要存储连接的字符串,如果你将它们用于这样的目的。 – Matt