gpt4 book ai didi

mysql - 在同一张表上使用多个条件进行 SQL 选择

转载 作者:可可西里 更新时间:2023-11-01 07:17:58 26 4
gpt4 key购买 nike

我在 MySQL 中有 2 个表,第一个有 2 列:ID 和名称,第二个有 3 列:firstTableId(第一个表上的外键)、键、值。

我在表 1 中有以下行:

  • 1,鲍勃
  • 2,爱丽丝
  • 3,弗雷德

我在表 2 中有以下行:

  • 1岁,20岁
  • 1,性别,男
  • 2岁,20岁
  • 2,性别,女
  • 3岁,18岁
  • 3,性别,男

我想只使用第二个表的最后两列(键和值)编写一个选择查询,它只返回第一个表中的 Bob,但我似乎无法弄清楚。

本质上,我想从第一个表中选择所有行,在第二个表中,一行有 key=age 和 value=20,另一行有 key=gender 和 value=male。谁能指出我正确的方向?操纵表结构不是首选,因为这是一个简化的示例,第二个表中的“键”和“值”列几乎可以是任何东西,实际上并不限于“年龄”和“性别”。

提前致谢。

最佳答案

您可以像这样使用自连接来做到这一点:

select
*
from
table1 t1
inner join table2 age on t1.id = age.id
inner join table2 gender on t1.id = gender.id
where
(age.`key` = 'age' and age.value = 20)
and
(gender.`key` = 'gender' and gender.value = 'male')

您可能想尝试的另一种策略是 PIVOT 查询。 Mysql 没有任何原生支持 pivot 的东西,但是有 several examples如何去做。

你可以看到它在这个 fiddle 中工作

关于mysql - 在同一张表上使用多个条件进行 SQL 选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26537714/

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