gpt4 book ai didi

mysql - 自连接 SQL 查询

转载 作者:行者123 更新时间:2023-11-29 09:11:13 26 4
gpt4 key购买 nike

几天前,我询问了我需要解决的 SQL 查询的解决方案,我的数据如下所示:

meta_id post_id     meta_key    meta_value
269 4 _apais USA
270 4 _aciudad New york
271 4 _aservicio Pleasure

...
272 43 _apais USA
273 43 _aciudad Chicago
274 43 _aservicio Fun
...
275 44 _apais USA
276 44 _aciudad Miami
277 44 _aservicio Night Life

278 45 _apais USA
279 45 _aciudad Miami
280 45 _aservicio Sports

我需要做的是显示所有与 Country 与 City 和 Service 匹配的寄存器。或者按国家/地区(和 _aservicio 作为服务)对所有 _aciudad 寄存器进行排序,例如:

meta_id     post_id     meta_key    meta_value  meta_key    meta_value  meta_key  meta_value
270 7 _apais USA _aciudad New York _aservicio Pleasure
261 13 _apais USA _aciudad Chicago _aservicio Fun
276 4 _apais USA _aciudad Miami _aservicio Sports

@Ravi Gummadi 给了我一个如下所示的解决方案:

SELECT t1.meta_id, 
t1.post_id,
t1.meta_key,
t1.meta_value,
t2.meta_key,
t2.meta_value
FROM th_postmeta t1, th_postmeta t2
WHERE t1.post_id = t2.post_id
AND t1.meta_key = '_apais'
AND t2.meta_key = '_aciudad'
ORDER BY t1.meta_key

该查询返回:

meta_id     post_id     meta_key    meta_value  meta_key    meta_value
270 7 _apais USA _aciudad New York
261 13 _apais USA _aciudad Chicago
276 4 _apais USA _aciudad Miami
279 10 _apais USA _aciudad Miami

如何才能只显示meta_value值中不重复的记录(仅对于_aciudad和_aservicio,_apais可以重复)?

非常感谢大家!

最佳答案

因此,您最终将得到超过 1 行具有相同元值的结果。您想丢弃其中一些行,即使它们的其他字段具有不同的值?在 SQL Server 中,您可能会执行以下操作:

SELECT
..., x = ROW_NUMBER() OVER(PARTITION BY meta_value ORDER BY meta_id )
WHERE
x <= 1

这引入了另一个计算列(x),每行(排序依据)的数量不断增加,在每个元值(分区依据)上重新启动。 order by 子句定义了哪些是最重要的保留/丢弃,而 where 是每个保留的数量。

meta_id     post_id     meta_key    meta_value  meta_key    meta_value   x
261 13 _apais USA _aciudad Chicago 1
270 7 _apais USA _aciudad New York 2
276 4 _apais USA _aciudad Miami 3
279 10 _apais USA _aciudad Miami 4
280 10 _apais ABC _aciudad Miami 1
281 10 _apais ABC _aciudad Miami 2

我意识到您已将其标记为 MySql。我并不真正使用 MySQL,希望这能为您提供有关 Google 的新内容的线索。也许:

ROW_NUMBER() in MySQL

关于mysql - 自连接 SQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5503289/

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