gpt4 book ai didi

Mysql 选择行值

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

我正在尝试为 wordpress 创建一个插件,但我遇到了一个具有这样结构的表

enter image description here

示例数据

enter image description here

如果我想得到,我的 MySQL Select 查询应该是什么样子的

user_id  where City = 'CityName' and Gender = 'Male' //sample query

有点像

SELECT user_id,value,country FROM `wp_bp_xprofile_data` WHERE value = 'CityName' AND value = 'Male' GROUP BY user_id

输出应该像

1 | nameofperson_1 | country_name
2 | nameofperson_2 | country_name
3 | nameofperson_3 | country_name
4 | nameofperson_4 | country_name

最佳答案

为了将 field_id 与特定值匹配,您必须将它们成对匹配 (field_id AND value)。然后你将不得不计算火柴的数量。

SELECT user_id FROM wp_bp_xprofile_data t
WHERE (field_id = 270 AND value = 'Gender') OR
(field_id = 354 AND value = 'City')
GROUP BY user_id
HAVING COUNT(*) = 2

fiddle here .

应用 Entity-Attribute-Value (EAV) 模型导致的一件事是您的表未规范化,那么您应该确保您没有多个 field_id给定具有相同值的 user_id

解决方法是查询:

HAVING COUNT(distinct field_id) = 2

但这当然不能解决数据问题。

编辑:

鉴于您的问题更新......为了返回额外的数据,可能将条件放在 having 子句中可能会更好:

SELECT
user_id,
max(case when field_id = 270 then value end) nameOfPerson,
max(case when field_id = 354 then value end) cityName
FROM wp_bp_xprofile_data t
GROUP BY user_id
HAVING SUM(
(field_id = 270 AND value = 'Gender') +
(field_id = 354 AND value = 'City')
) = 2

fiddle here .

关于Mysql 选择行值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20343802/

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