Hi,大家好,我是编程小6,很荣幸遇见你,我把这些年在开发过程中遇到的问题或想法写出来,今天说一说关于SQL的交集查询问题[通俗易懂],希望能够帮助你!!!。
数据库内数据如下
条件① (tag_name = '归属' AND ag_value IN ( '教育局','六壬','企业' ))
条件② (tag_name = '城市' AND tag_value IN ('北京', '上海', '福州'))
条件三 (tag_name = '核心中枢' AND tag_value IN ('是'))
我要 获得同时满足条件①和条件②的node_id, 最后的结果应该是aaa和bbb
我要 获得同时满足条件①和条件②和条件③的node_id, 最后的结果应该是aaa
SELECT
d1.node_id
FROM
dist_node_tag d1,
dist_node_tag d2,
dist_node_tag d3
WHERE
d1.node_id = d2.node_id
AND
d1.node_id = d3.node_id
AND (
(
d1.tag_name = '归属'
AND d1.tag_value IN ( '教育局', '六壬', '企业')
)
AND (
d2.tag_name = '城市'
AND d2.tag_value IN ('北京', '上海', '福州')
)
AND (
d3.tag_name = '核心中枢'
AND d3.tag_value IN ('是')
)
)
SELECT
*
FROM
(
SELECT
node_id,
count(1) AS count
FROM
dist_node_tag
WHERE
(
tag_name = '城市'
AND tag_value IN ('北京', '上海', '福州')
)
OR (
tag_name = '归属'
AND tag_value IN ('教育局', '六壬', '企业')
)
group by node_id
) t
WHERE
count = 2
上一篇
已是最后文章
下一篇
已是最新文章