如何使一个sql查询请求多行
我有这样的表格(示例和其中的一部分): 我想在这个表中使用一个查询查找是否存在,例如伦敦,Kingsway 50及其节点id。如何进行此类查询,甚至可能吗?如何处理这样的问题 伪代码:如何使一个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
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'