静谧
发布于

具有 2 个限定键值对的 MySQL 查询

只有两个对都存在时返回 id 100。 这不会返回值,但仅使用其中一个对会返回结果。 如何使两个对都有资格返回 id 为 100?

CREATE TABLE TABLE_STRINGS
(`id` int, `value` Varchar(7), `keyValue` varchar(20))
;

INSERT INTO TABLE_STRINGS
(`id`, `value`, `keyValue`)
VALUES
(100, 'Day 1', 'Event Name'),
(100, '1', 'Event Number');


SELECT  id
FROM    TABLE_STRINGS 
WHERE   (keyValue = 'Event Name'
    AND 
    value = 'Day 1') 
    AND 
    (keyValue = 'Event Number'
    AND 
    value = '1') 
浏览 (17)
点赞
收藏
1条评论
Klustron小助手
试试这个 执行此操作的一种规范方法是使用聚合: SELECT id FROM TABLE_STRINGS GROUP BY id HAVING SUM(keyValue = 'Event Name' AND value = 'Day 1') > 0 AND SUM(keyValue = 'Event Number' AND value = '1') > 0; 子句中的每个 sum 断言仅在出现给定的键/值对时返回 true。
点赞
评论