SQL OR运算符在不同的表和列名称上

时间:2016-06-30 17:05:45

标签: mysql sql database

我知道我可以在表的同一列上使用OR SQL运算符,如下所示:

SELECT * FROM users WHERE last_name = 'Peter' OR last_name = 'Smith';

但我现在的情况是我正在尝试在两个不同的表(不同的列名)上使用OR运算符。那可能吗?如何在SQL查询中实现该目标?

是的,有一个外键列将一个表链接到另一个表的主键列。

提前感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

如果不同表中的字段具有相同的名称,则可以使用tablename.fieldname区分它们,如果表具有相同的名称(在不同的模式中),则可以使用{{1}进一步限定名称}。

当然,schemaname.tablename.fieldnameWHERE子句中引用的所有表都应包含在SELECT子句中。

注意:如果某个表在FROM中有别名,则应使用别名而不是表名。

您无法在FROM中未包含的表格中显示(或在WHERE条件等中使用...)字段;但是,您可以在这些表上使用子查询。

示例:

FROM

...
FROM table1 AS t1
WHERE t1.field1 = somevalue 
   OR EXISTS (
         SELECT * 
         FROM table2 AS t2 
         WHERE t2.somefield = someothervalue
   )
...

...

答案 1 :(得分:0)

是的,有可能

SELECT users.* FROM users,countries WHERE users.last_name = 'Peter' OR countries.name = 'mexico' AND users.idCountry=countries.id;