在SQL DB中引用两个表

时间:2018-02-21 04:46:54

标签: mysql sql

我是SQL的新手,我怎么能回答以下问题?我使用加入吗? 非常感谢你。

搜索“排水”一词的人有哪些名称和家乡城市?

.schema如下:

CREATE TABLE `users` (
  `id` INTEGER,
  `name` VARCHAR,
  `email` VARCHAR,
  `city` VARCHAR,
  `state` VARCHAR,
 `last_visit` DATE,
 `page_views` INTEGER,
 PRIMARY KEY (`id`)
);
CREATE TABLE `search_terms` (
  `id` INTEGER,
  `word` VARCHAR,
  PRIMARY KEY (`id`)
);

3 个答案:

答案 0 :(得分:0)

您需要将search_terms表与users表连接。我假设search_terms.id引用了users.id。 将它们链接起来,将为我们提供每个用户的搜索条件的结果。 从那里你可以添加更多的过滤器(WHERE条件)以获得更具体的结果。

因此,要获取每个用户的名称和主页城市,您需要从users表中选择名称和城市,然后加入search_terms表和链接ID列,以了解每个用户在搜索中使用的单词。

查询应该是这样的:

SELECT name, city
FROM users
LEFT JOIN search_terms ON search_terms.id = users.id 
WHERE 
    search_terms.word LIKE 'drain';

答案 1 :(得分:0)

select u.name, u.city
    from users u
    inner join search_terms st on st.id = u.id
    where st.word = 'drain'

我希望这会有所帮助。

答案 2 :(得分:0)

您可以使用JOIN或子查询。这是基本策略:

  1. 获取与您要查找的内容相匹配的id
  2. 查找id
  3. 的所有其他信息

    SELECT name, city
    FROM users usr
    INNER JOIN search_terms stm ON usr.id = stm.id
    WHERE stm.word = 'drain';
    

    或......

    SELECT name, city
    FROM users
    WHERE id IN (SELECT id FROM search_terms WHERE word = 'drain');