获取引用外键的ID值

时间:2017-10-18 03:12:54

标签: php mysql

背景:我使用MySQL和InnoDB作为引擎和PDO来执行SQL。

我不熟悉外键,但我有一个customers数据表,其中包含suffix_id字段,此表中的suffix_id字段引用了id字段一个suffix数据表。我被告知这样做的原因是,名称的后缀很可能是重复值,并且具有外键约束应该可以提高性能。

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

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

然后将该查询中的值作为单独的命令传递给我的“真实”查询:

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

但对我来说,运行两个单独的命令似乎效率低下。是否有另一种方法来获取外键应该在与我的“真实”查询相同的查询中引用的id值?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

由于您正在实施搜索,因此您可能需要LIKE,并且您还可以将这两个查询合并为一个:

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

将取决于LIKE的严格程度。