gpt4 book ai didi

mysql - 在同一个表上选择多个键值对

转载 作者:行者123 更新时间:2023-11-29 05:57:04 24 4
gpt4 key购买 nike

我有一张 table

id keyword_id value   category_id asset_id
1 2 abc.jpg 4424 479
2 3 Jpeg 4424 479
3 4 400*600 4424 479
4 2 def.jpg 4424 603
5 3 Jpeg 4424 603
6 4 500*700 4424 603

我想根据多个对获取值,例如 (keyword id = 3 and value like '%Jpeg%') And (keyword id = 2 and value like '%abc% ').

这应该只返回一个 asset_id 479 的值,因为它满足两个条件。

我正在运行类似

的查询
SELECT DISTINCT asset_id FROM asset_keyword_table where category_id = 4424
AND (( keyword_id = 2 AND value LIKE '%abc%') AND ( keyword_id = 3 AND
value LIKE '%Jpeg%'));

但是 EXPLAIN 这个查询返回不可能的 WHERE 子句。让这个工作的方法是什么。此查询由 BE 代码生成,因此像这样的 block 可以有很多 -

( keyword_id = 2 AND value LIKE '%abc%')

取决于用户输入。 AND 或 OR 分隔的 block 也由用户确定。不可能使用别名,因为 block 的数量没有限制。

有人能帮忙吗?

最佳答案

您需要过滤符合条件的总行数。

SELECT  Asset_ID
FROM asset_keyword_table
WHERE category_id = 4424
AND
(( keyword_id = 2 AND value LIKE '%abc%')
OR (keyword_id = 3 AND value LIKE '%Jpeg%'))
GROUP BY Asset_ID
HAVING COUNT(*) = 2 -- number of rows that matched the condition

这是一个 Demo .

关于mysql - 在同一个表上选择多个键值对,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48440551/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com