我的表坐标
是:
ID (PK) SERIAL, 地址 (VARCHAR), 城市 (VARCHAR), 纬度 (VARCHAR), 经度 (VARCHAR)
我有一个包含10,000个地址的列表,如果地址存在于表中,我将循环访问该列表以检索相应的纬度/经度。
SELECT
查询如下所示:
选择地址,城市,纬度,经度 从坐标中地址= ?城市 = ?
然后我检查结果集,看看是否有匹配。然后通过上面的查询循环其他9,999个地址,这花费的时间太长了。
是否有一种方法可以创建一个包含所有10000个地址的查询,并返回一个包含4列的结果集:|地址|城市|纬度|经度|
任何未找到地址在结果集列中都应该有一个空(0或null)纬度/经度值。我假设我可以循环结果集来识别遗漏的内容,这比10,000条语句要快得多。
最好的方法是什么?
对于 10,000 对,查询长度可能是一个问题。另外,如果您绝对需要一次点击即可完成,则可以尝试此操作。
将值插入到临时表中。然后:
SELECT tbl.val1, tbl.val2
FROM tbl
WHERE (tbl.val1, tbl.val2) in (select tmp_table.val1, tmp_table.val2 from tmp_table);
也可以是JOIN,而不是IN。
更新:
(1)插入必须是每行一个。可能会创建一个脚本文件,并提交一些内容;语句在几百行中出现一次。如果它是从Java中完成的,你可以使用JDBC addBatch在500/1000行中提交一次。
--Create temp table before this with two columns address (VARCHAR), city (VARCHAR)
INSERT INTO TMP_TABLE VALUES ( ?, ?); //Prepare statement and addBatch
(2, 3, 4)
SELECT ADDRESS, CITY, LATITUDE, LONGITUDE
FROM coordinates
WHERE (ADDRESS, CITY) in (select tmp_table.address, tmp_table.city from tmp_table);
UPDATE:更改为在结果中包含不匹配的“查询”地址,并添加了QUERY_ID以帮助识别“查询”地址,该地址可能只是提供查询参数的列表中的索引。
由于是PostgreSQL,您可以使用VALUES
子句,例如。
sql prettyprint-override">SELECT q.QUERY_ID
, c.ADDRESS
, c.CITY
, c.LATITUDE
, c.LONGITUDE
FROM (VALUES (1, ?, ?)
, (2, ?, ?) // repeat as many times as needed
, (3, ?, ?)
) AS q (QUERY_ID, ADDRESS, CITY)
LEFT JOIN coordinates AS c
ON c.ADDRESS LIKE q.ADDRESS
AND c.CITY LIKE q.CITY
现在您需要遍历10000个地址并设置该Presared语句
的所有值。
问题内容: 我有桌子: 我想写一个返回BookName,FirstName,LastName,RubricName的SELECT查询。 我有两个单独的查询,但我不知道如何在一个选择中编写此查询。这就是我得到的: 它工作正常,但如何在一个选择中编写? 我尝试这样做,但是不起作用: 它返回错误: 问题答案: 试试这个查询
我有一个Laravel后端和一个VueJS前端。 我试图在一个具有hasOne关系的模型上生成一个查询,但只从关系中选择特定的列,做一个sum和一个group By。 null
我试图从获取数据。总共有9个表格,我必须相应地从所有表格中显示产品列表。 我考虑过使用连接,并尝试了左连接,如下所示: 这里是主表,pid是从tbl2到tbl9的所有表的。 注意:这里我在所有表上使用了来避免长查询,但是在实际的数据库操作中,只提到特定的列来提高性能。 现在实际的问题是,我没有得到所有的记录从表使用左加入。只检索中对应的每个条目的最后一行。 我使用了GROUP BY来避免重复的左连
问题内容: 我有两个表,一个“公司”和一个“员工”: 我想在表中列出每个员工,并在其旁边列出公司。通过调用并在模板循环中通过并调用,这非常简单。 该解决方案的问题在于,将为循环中的每个项目创建一个新查询。因此,对于每个员工,公司都会有一个查询,看起来像这样: 相反,我希望最初在获取雇员的同一查询中加入此联接。像这样: Django QuerySet是否可能?如果没有,有没有办法可以解决此问题(没有
问题内容: 我想根据URL字符串选择一些ID,但对于我的代码,它仅显示第一个。如果我写手册的ID是伟大的。 我有这样的网址http://www.mydomain.com/myfile.php?theurl=1,2,3,4,5(ids) 现在在myfile.php中,我有sql连接,并且: 如果我使用这个: 我得到正确的结果。现在,如果我使用下面的代码,它将无法正常工作: 有什么建议? 问题答案:
我有一个elasticsearch索引用于存储关于人的信息。为了找到特定的人,我有一些查询,每个查询都单独工作,但是当我使用Bool查询将它们组合起来时,我会得到一个错误。 其中一个查询是对名称的模糊搜索 另一个查询用于搜索在特定日期范围内出生的人 现在我想组合这两个查询。我的bool查询: 虽然当我单独使用它们时,这两个查询都工作得很好,但当把它们组合起来时,我会得到一个错误。我的索引中有名字是