交叉引用2个表并得到结果


cross referencing 2 tables and getting results

我有两个mysql表

其中有一个与城市相关联的用户id列表。即"Fort Lauderdale",但用户id实际上位于名为entity_id的列中,城市位于名为field_city_value的字段中。

此查询返回"Fort Lauderdale"中的所有entity_id

SELECT entity_id 
FROM  `field_data_field_city` 
WHERE  `field_city_value` LIKE  'Fort Lauderdale'

然后这个查询返回用户id 的邮件

SELECT mail 
FROM  `users` 
WHERE  `uid` =42

我想将2合并,并获得所有与Fort Lauderdale匹配的用户ID的所有邮件。

使用联接语句。

http://dev.mysql.com/doc/refman/5.0/en/join.html

这是一种冗长的方法。未经测试,此框上没有mysql访问权限。

SELECT field_data_field_city.entity_id,users.mail FROM users,field_data_field_city WHERE field_city_value LIKE 'Fort Lauderdale' AND field_data_field_city.entity_id = users.uid

SELECT * FROM field_data_field_city city INNER JOIN users user on city.entity_id=user.uid

我们能假设users.uidfield_data_field_city.entity_id相同吗?如果是这种情况,您将希望研究使用MySQL连接

您可以尝试子选择:

SELECT mail FROM users WHERE uid IN (SELECT entity_id FROM field_data_field_city WHERE field_city_value LIKE 'Fort Lauderdale')

这样就可以了。您可能想对它进行一点更改,以查找重复项或类似项,但这个简单的查询应该可以使用

SELECT u.mail
FROM users u
   LEFT JOIN field_data_field_city fdfc ON fdfc.entity_id = u.uid
WHERE fdfc.field_city_value LIKE 'Fort Lauderdale'