在 SQL IN 中使用数组


Using an array in SQL IN

两部分问题...(请注意,我使用的是 PostGres(

我的 SQL 查询的格式如下:

$.ajax({
        url: "https://something?q=SELECT *database_final_form_merge where territory in ("+terrs+")",
        type: 'GET',
        dataType: 'JSON',
     success: function(data) {
      }
       });

变量 terrs 是如下所示的数组:

["D1VE3011", "D1VE3011", "D1VD2209", "D1VD2209", "D1VD2103", "D1VD2103"]

不过,这会像这样格式化 SQL 查询:

SELECT* from database_final_form_merge where territory IN (D1VE3011,D1VE3011,D1VD2209,D1VD2209,D1VD2103,D1VD2103)

但它需要采用这种格式(我认为(:

SELECT* from database_final_form_merge where territory IN ('D1VE3011','D1VE3011','D1VD2209','D1VD2209','D1VD2103','D1VD2103')

当我在没有 AJAX GET 的情况下直接尝试它时,这有效。我应该通过不同的方式传递这个数组吗?

这是问题1。

问题 2...有没有办法传递该数组以便只传递唯一值?您会注意到在我的数组中有重复项,但想知道是否有一种方法可以只传递唯一值。

谢谢。

让我们把

传递查询作为参数放在一边,进入问题。

对于问题 2,您可以使用jQuery.unique

对于前一个问题:

"('" + terrs.join("','") + "')"生成('D1VE3011','D1VE3011','D1VD2209','D1VD2209','D1VD2103','D1VD2103')零件。

不过要注意空白。你最终可能会得到这样的字符串

'(' D1VD2209',' D1VD2103','D1VD2103 ')

*相应编辑