2017-10-18 69 views
0

背景:我将InnoDB用作MySQL的引擎和PDO来执行SQL。获取引用外键的ID值

我是新来的外键,但我有一个包含suffix_id场,此表中的suffix_id字段引用的数据suffix表中id领域的customers数据表。我被告知要这样做的原因是,最有可能是名称后缀的重复值,并且具有外键约束的应该会提高性能。

我不明白的是如何从suffix表中获得id的值。我知道如何是唯一的方法来执行一个SQL查询是这样的:

SELECT `id` FROM `suffix` WHERE `description` = ? 

,然后从该查询传递值到我的“真实”的查询作为这样一个单独的命令:

SELECT ... FROM `customers` WHERE ... AND `suffix_id` = [value from earlier query] 

但对我来说,这似乎无法运行两个单独的命令。是否有另外一种方法来获取外键在同一个查询中引用的id值作为我的“真实”查询?

+0

你真的在'后缀表','描述'或'id'中得到了什么? – Swellar

+0

我正在寻找描述,所以我需要从后缀表中获取id,以便将其包含在我的客户搜索的where子句中。 – David

+0

难怪流程看起来颠倒了,您正在使用它进行搜索。 “说明”的内容是什么? – Swellar

回答

0
SELECT b.id 
FROM `customers` a INNER JOIN `suffix` b ON a.suffix_id = b.id 
WHERE suffix_id = some_value; 

你要查找的概念JOINS这是用来结合表:https://dev.mysql.com/doc/refman/5.7/en/join.html

+0

感兴趣OP正在寻找一种方法来获取'id'作为' suffix_id',这与你的答案完全不同。 OP没有任何东西可以放在你的WHERE条款中 – Swellar

+1

不,这正是我所期待的。如果我没有正确地说出我的问题,我很抱歉。 – David

0

既然要实现搜索,你可能会需要LIKE,并且还可以结合这两个查询合并为一个:

SELECT customer.* 
FROM customer 
    INNER JOIN suffix ON suffix.id = customer.suffix_id 
WHERE suffix.description LIKE ? 

这将取决于您有多严格LIKE将是。