返回第2列等于1的所有记录(在第3列中),而不在第2列中搜索

时间:2014-08-12 16:24:01

标签: php mysql sql

我有一个数据库,在一列中有很多名称(每个名称的拼写不同),并希望返回一个名称的所有变体。为此,我创建了第二个(整数)列,只要它只是一个变体,它就具有相同的值。

ID |名称| variation_nr

1   |  Aaron   |        1
2   |   Aron   |        1
3   |   Bob    |        2

我想要做的是搜索Aaron以及让Aaron和Aron同时返回的程序。

到目前为止我所拥有的是SELECT * FROM name WHERE name=$name;

如何让它显示其variation_nr与输入名称的variation_nr相同的所有名称?

2 个答案:

答案 0 :(得分:4)

您可以使用子查询:

SELECT * FROM name
WHERE variation_nr IN (SELECT variation_nr FROM name WHERE name = $name);

答案 1 :(得分:1)

您可以使用INNER JOIN并将表格加入variation_nr字段,如下所示:

SELECT `n2`.*
FROM `name` AS `n1`
INNER JOIN `name` AS `n2`
    ON (`n1`.`variation_nr` = `n2`.`variation_nr`)
WHERE `n1`.`name` = $name;

SQL Fiddle