Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使一个sql查询请求多行_Sql_Postgresql - Fatal编程技术网

如何使一个sql查询请求多行

如何使一个sql查询请求多行,sql,postgresql,Sql,Postgresql,我有这样的表格(示例和其中的一部分): 我想在这个表中使用一个查询查找是否存在,例如伦敦,Kingsway 50及其节点id。如何进行此类查询,甚至可能吗?如何处理这样的问题 伪代码: SELECT node_id WHERE (k == 'addr:city') == 'London' AND (k == 'addr:street') == 'Kingsway' AND (k == 'addr:housenumber') == '50' AND for all node_id the same

我有这样的表格(示例和其中的一部分):

我想在这个表中使用一个查询查找是否存在,例如伦敦,Kingsway 50及其节点id。如何进行此类查询,甚至可能吗?如何处理这样的问题

伪代码:

SELECT node_id WHERE (k == 'addr:city') == 'London' AND (k == 'addr:street') == 'Kingsway' AND (k == 'addr:housenumber') == '50' AND for all node_id the same

数据库的架构:,我的表节点\u标记。

您可以像这样使用自连接:

SELECT n1.node_id FROM node_tags n1
INNER JOIN node_tags n2 ON n1.node_id = n2.node_id
INNER JOIN node_tags n3 ON n1.node_id = n3.node_id
WHERE n1.k = 'addr:housenumber' AND n1.v = '50'
AND n2.k = 'addr:street' AND n2.v = 'Kingsway'
AND n3.k = 'addr:city' AND n3.v = 'London'
使用PostgreSQL可能有更好的方法,但我对DBMS不太熟悉


样本。

好奇,这张桌子的主键是什么?节点id和K或V的组合?应该是什么意思?这不是一个有效的SQL表达式。这是什么味道的SQL?@TYH这是postgresql@a_horse_with_no_name我知道这是假的谢谢,这正是我想要的。
SELECT n1.node_id FROM node_tags n1
INNER JOIN node_tags n2 ON n1.node_id = n2.node_id
INNER JOIN node_tags n3 ON n1.node_id = n3.node_id
WHERE n1.k = 'addr:housenumber' AND n1.v = '50'
AND n2.k = 'addr:street' AND n2.v = 'Kingsway'
AND n3.k = 'addr:city' AND n3.v = 'London'