我希望获得包含%planet%和%world的帖子ID。
有了这个陈述,我会得到一个94作为post_id。
当前问题的可能重复是这篇文章:SQL: how to select a single id ("row") that meets multiple criteria from a single column
我似乎无法弄清楚如何使用LIKE语句。
post_id Meta Value
96 Hello World 123
96 Hello World 123
92 Hello World 123
93 Hello World 123
93 Hello World 123
94 Hello World 123
94 Hello Planet 1234
94 Hello World
95 Hello World
95 Hello World
答案 0 :(得分:1)
这将满足您的需求。加入了两个查询。第一个获取包含planet的列表ID。第二个获取世界的列表ID。我加入了这两个意味着它必须在两个查询中都要返回。
select a.post_id from
(select post_id from t1 where meta like '%planet%' group by post_id) a
join
(select post_id from t1 where meta like '%world%' group by post_id) b
on a.post_id = b.post_id
答案 1 :(得分:0)
因为结果分为多个记录(没有一条记录包含planet
和world
,但对于单个post_id
,两者都可以在post_id
94中找到你需要一个两步法。
忽略性能问题,以下内容将为您提供预期的结果(SQL Server):
DECLARE @MyTable TABLE
(
post_id INT,
Meta VARCHAR(100),
Value INT
)
INSERT INTO @MyTable
(post_id, Meta, Value)
VALUES (96, 'Hello World', 123),
(96, 'Hello World', 123),
(92, 'Hello World', 123),
(93, 'Hello World', 123),
(93, 'Hello World', 123),
(94, 'Hello World', 123),
(94, 'Hello Planet', 1234),
(94, 'Hello World', NULL),
(95, 'Hello World', NULL),
(95, 'Hello World', NULL)
SELECT DISTINCT post_id
FROM @MyTable
WHERE post_id IN (SELECT DISTINCT post_id FROM @MyTable WHERE [Meta] LIKE '%planet%')
AND [Meta] LIKE '%world%'