gpt4 book ai didi

mysql - 需要用 SQL 编写稍微高级的查询

转载 作者:太空宇宙 更新时间:2023-11-03 12:18:39 25 4
gpt4 key购买 nike

假设这是一张表:

------------------------------------
|post_id|meta_tag|meta_value |
------------------------------------
|1 |address |123 Example Lane |
------------------------------------
|1 |name |John Doe |
------------------------------------
|1 |email |johndoe@gmail.com|
------------------------------------
|3 |foo |bar |
------------------------------------

基本上我想做的是从一个 post_id 中选择 * 只有当它的一个 meta_tag 值中有地址时。然后我希望能够为每个 post_id 输出所有 meta_value

希望这不会太困惑。谢谢。

最佳答案

获取帖子至少有一个地址标签的所有行:

select *
from t t1
where exists (select 1
from t t2
where t2.post_id = t1.post_id and t2.meta_tag = 'address'
);

如果您恰好想要一个,有多种方法。遵循相同的逻辑:

select *
from t t1
where 1 = (select count(*)
from t t2
where t2.post_id = t.post_id and t2.meta_tag = 'address'
);

如果您真的只想要具有一个地址标签的 *post_id*:

select post_id
from t t1
group by post_id
having sum(t1.meta_tag = 'address') = 1;

(如果您正在寻找任何 address 标签,则将 > 设置为 0。)

关于mysql - 需要用 SQL 编写稍微高级的查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21024930/

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