寻找匹配:相同的变量,不同的表

时间:2014-01-21 13:54:26

标签: mysql sql

我有一个包含2个表的数据库:研究人员和学生。

这两个表都有一个名为lastname的变量。

我想要做的是在两个表中查找输入的姓氏。

当我输入命令时:

SELECT lastname 
    FROM researchers 
    OR students 
    WHERE lastname = $certain_variable

我会得到error #105 2让我意识到变量含糊不清。

我该如何解决这个问题?

3 个答案:

答案 0 :(得分:0)

您可以使用TABLENAME.LastName,这样可以消除歧义。

答案 1 :(得分:0)

编辑:在澄清问题后删除LEFT JOIN个答案。

您可以使用复合查询:

SELECT all_lastnames.lastname FROM (
   SELECT lastname FROM students
   UNION
   SELECT lastname FROM researchers
) all_lastnames
WHERE lastname = $certain_variable

基本上这样做是从两个表中选择姓氏到1"临时表" (由UNION创建),其别名为all_lastnames。然后,您可以在SELECT

上运行all_lastnames

答案 2 :(得分:0)

如果两个表之间有共同的姓氏,请使用

SELECT a.lastname FROM 
researches AS a 
LEFT JOIN students AS b ON (a.lastname=b.lastname)
WHERE a.lastname = '$var'

您需要告诉查询您想要的姓氏(来自研究或学生) 这就是你需要指定tablename或tablealias.field的原因。

如果您的表没有共同的姓氏值,并且您想要 搜索它们以查找您可以使用UNION的姓氏:

SELECT 'found researches', lastname FROM researches WHERE lastname = '$var'
UNION
SELECT 'found student', lastname FROM students WHERE lastname = '$var'

确保逃避$ var。