gpt4 book ai didi

php - 如何通过选择特定列中相关数据的组合来从表中选择行? MySQL

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

我有一张 table ;

表格

tablea

4c4fedf7    OMoy3Hoa
4c4fedf7 yiWDGB4D
broe4AMb A9rLRawV
broe4AMb mi9rLmZW
nhrtK9ce yEsBoYLj
rEEtK9gt A9rLRawV
rEEtK9gt mi9rLmZW
rEEtK9Hh A9rLRawV
rEEtK9Hh msBWz8CQ

如果我给出像 A9rLRawV 这样的输入,mi9rLmZW。我想要这样的输出;

broe4AMb
rEEtK9gt

输出是 A9rLRawVmi9rLmZW 组合的结果。这里,broe4AMbrEEtK9gt 都在表 a 中关联了 A9rLRawVmi9rLmZW。我进行了查询,但得到的输出如下:

broe4AMb
rEEtK9gt
rEEtK9Hh

我的查询是这样的;

SELECT DISTINCT prodid
FROM tablea
WHERE tagid IN ('A9rLRawV','mi9rLmZW');

输出是这样的,因为我认为 reetK9Hh 在 tablea 中有 A9rLRawV 与之关联。但我不希望该条目出现,因为它没有与之关联的 mi9rLmZW

这是 SQL fiddle http://sqlfiddle.com/#!9/12223/2/0

是否需要 SELF JOIN。什么是最“有效”的方法?是否可以单独使用 MySQL 或在 PHP 的支持下实现此目的?我该怎么做/解决这个问题?

最佳答案

我坚信这可以单独通过 SQL 解决。从数据库中获取你需要的数据。让 PHP 做演示。为什么?通常,数据库可以比您通过网络服务器/中间件服务器上的代码更快地解析数据。

至于如何......阅读having子句和group by:

我在这里所做的是按 prodID 分组,以确保返回所有 prodID。 mySQL 扩展了 group by 子句,虽然它可能允许在没有 group by 的情况下存在 having 子句,但如果不按 prodid 分组,您将无法获得所需的结果。有一个获取在 where 中请求的两个标签的不同计数。注意:我将 distinct 添加到 tagID 的计数中,因为我不确定您的整体数据是否对每个 prodid 都有重复的 tagId。如果我们知道值(value)观是不同的,我们就可以消除它。

# 可以根据需要根据提供的 TagID 数量动态设置。

SELECT prodid
FROM tablea
WHERE tagID in ('A9rLRawV','mi9rLmZW')
GROUP BY prodid
HAVING count(distinct tagID)=2

SQL FIddle

我更喜欢这种方法,因为它比您指出可能需要的自连接更好。传入两个参数:一个是标签,一个是标签的数量。 (我希望您在 PHP 中使用参数化查询)使用自连接,您必须编写动态 SQL 来处理每个附加标记,因此如果您有 3、4、5 个连接。这样您只需传入 5 个值和数字 5;并返回所有匹配项的列表。

关于php - 如何通过选择特定列中相关数据的组合来从表中选择行? MySQL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34187534/

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