数据库,求查询同时具有两个指定tag的sql

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库,求查询同时具有两个指定tag的sql相关的知识,希望对你有一定的参考价值。

在数据库里,我先存了两张表。
article表:
id:文章的id
text:文章内容

tag表:
aid:文章的id
tag:标签的文本

如果编号为1的文章有两个tag,那么tag表就有两条记录:
第一条:aid=1,tag=第一个标签
第二条:aid=1,tag=第二个标签

现在我想做的,是查询同时具有两个指定标签的文章id。。。跪求sql语句。Orz
例如,我想查询所有带“php”和“mysql”的文章id

参考技术A 未实验过,逻辑应该没问题的

SELECT
t.aid
FROM tb_tag t
WHERE 1=1
AND EXISTS(
SELECT 1
FROM tb_tag t1
WHERE t1.aid=t.aid
AND t1.tag LIKE '%php%' )
AND EXISTS (
SELECT 1
FROM tb_tag t1
WHERE t1.aid=t.aid
AND t1.tag LIKE '%mysql%' )
参考技术B select aid from tag group by aid having count(aid) = 2
看半天才把问题看明白,楼上正解。
select aid from tag where tag like '%php%' or tag like '%mysql%'
参考技术C 只要文章id 可以这样
select aid from tag group by id having count(*) = 2
参考技术D SELECT aid ,count(*) from tag
group by aid
having count(*)=2

select id from article where text like '%php%' or text like '%mysql%'

请教:SQL同一数据库中,两个查询结果数据类型不同时的union all 合并问题

请教:查询结果一:select 表1.字段1, 表1.字段2, 表1.字段3,from 表1 where。。。
查询结果二:select 表2.字段1, 表2.字段2, 表2.字段3,from 表2 where。。。
查询结果一中的类型全为varchar型,查询结果二中的类型:表2.字段1,其余为Numeric,
用union all怎样合并查询?

参考技术A select CAST(表2.字段1 AS VARCHAR(n), 表2.字段2, 表2.字段3,from 表2 where。。。

CAST(表2.字段1 AS VARCHAR(n) n的大小和表1.字段1的长度一致。追问

不好意思,写少了个字:
请教:查询结果一:select 表1.字段1, 表1.字段2, 表1.字段3,from 表1 where。。。
查询结果二:select 表2.字段1, 表2.字段2, 表2.字段3,from 表2 where。。。
查询结果一中的类型全为varchar型,查询结果二中的类型:表2.字段1为varchar型,其余表2.字段2/字段3为Numeric,
用union all怎样合并查询?

本回答被提问者和网友采纳
参考技术B union all不支持不同类型合并,尝试类型转化为相同的吧 参考技术C 通过cast(表2.字段2 as varchar)转换表2.字段2为varchar格式

以上是关于数据库,求查询同时具有两个指定tag的sql的主要内容,如果未能解决你的问题,请参考以下文章

SQL合并两个具有不同列号的选择查询,同时删除重复项?

sql中join on两个条件怎么写

SQL多表链接查询、嵌入SELECT语句的子查询技术

如何在 SQL 服务器中将数据插入到两个不同的表中,同时在 SQL 中具有 ORDER# 主键

SQL学习笔记 ----Mysql数据库的条件查询

sql查询字段