SQL-如何从2个表中获取相关值

时间:2018-11-22 09:32:31

标签: mysql sql

我有一个基于userid的表,其中包含用户喜欢的图像

我还有另一个表,其中包含用户的用户名和用户ID

我想运行一个查询,在查询中插入一个名称,然后检索该用户ID,并使用该用户ID搜索收藏夹表,返回用户名和所选图像

我对SQL还是很陌生,请多多帮助

SELECT * 
FROM  `atabl_users` 
WHERE  `name` LIKE  'user to input value' 
LIMIT 0 , 30


SELECT * 
FROM  `atabl_joomgallery_users` 
WHERE  `uid` =17
ORDER BY  `azc6a_joomgallery_users`.`uid` ASC 
LIMIT 0 , 30

2 个答案:

答案 0 :(得分:0)

如果您需要两个表中的所有信息,则需要它们都共享一个ID,以便可以将它们链接(联接)在一起。

根据您提供的信息,我假设两个表都包含值“ uid”作为用户ID。

因此,应使用以下查询:

“ SELECT * FROM atabl_users au INNER JOIN atabl_joomgallery_users aju ON au.uid = aju.uid WHERE au.name LIKE?AND aju.uid = 17 LIMIT 30”

我已经删除了ORDER BY,因为您需要使用另一个。如果您将其指定为17,则按uid进行排序是没有用的。

为说明起见,我们要求从表atable_users中获取所有信息*,然后为它分配一个简写值au,以使以后更易于阅读。然后,我们基于两个唯一值将此表集与另一个表连接起来。然后,我们可以使用WHERE值优化搜索,最后将结果集限制为30。

答案 1 :(得分:0)

您使用JOIN组合查询

SELECT j.* 
FROM  atabl_joomgallery_users j
JOIN atabl_users u ON u.id = j.uuserid
WHERE u.name LIKE ?

请注意,LIKE可能会返回多个用户,因此,如果您获得唯一的用户名作为输入值,则可以将where子句更改为

WHERE u.name = ?