gpt4 book ai didi

php - mysql 连接相同的表和列名

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

我有一个表profile_data,结构如下:

id, user_id, field_id, value

我需要为任何具有与多个邮政编码之一匹配且所在国家/地区为美国的用户获取 user_id。

到目前为止,我有这个不起作用的查询:

SELECT data1.user_id 
FROM profile_data data1, profile_data data2
WHERE data1.field_id = 80
AND ( value = '94114' OR value = '94146' OR value = '94117' )
AND data2.field_id = 90
AND value = 'United States'

最佳答案

这是我对您可能尝试做的事情的看法:

SELECT user_id
FROM profile_data
WHERE (field_id = 80 AND value IN ('94114', '94146', '94117'))
OR (field_id = 90 AND value = 'United States')

编辑

抱歉,我没有意识到每个用户可能有多行。如果是这样的话,那么上面的方法就不起作用了。上面答案中编辑的存在语句将。尽管您不需要将两者都作为子查询来执行:

 SELECT user_id FROM profile_data p1
WHERE (field_id = 80 AND value IN ('94114', '94146', '94117'))
AND EXISTS (SELECT 1 FROM profile_data p2 WHERE field_id = 90 AND value = 'United States' AND p1.user_id = p2.user_id)

无论如何,希望您的优化器能够将其减少到正确的连接数量。

顺便说一句,邮政编码是特定于国家/地区的。所以这个具体的例子是多余的,但有很多有效的用例。

关于php - mysql 连接相同的表和列名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7940526/

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