从多个表格中选择数据并比较不同的列

时间:2019-11-25 08:18:45

标签: mysql sql

如何从两个不同的表中选择数据并进行比较并得到结果?

我有一张桌子1

id  name    surname    adress
1   Fred    Lapinski   brook st. 3-5
2   Albert  Enstein    wall st. 3-5
3   David   Leterman   blue st. 3-5
4   Andrew  Igudola    groov st. 3-5

和Table2

id  name             replacement
1   Patrick Kane     Igor Petrov
2   Fred Lapinski    Warrent Buffet
3   Sabrina Kubrick  Bill Dill
4   Andrew Igudola   Rebbeca Aberson 

我想从两个表中选择数据,并且如果table1中的名称与table2中的名称相同,则返回true并回显替换名称。 我正在建立一个系统,该系统可以显示哪些工人今天不在工作中,以及谁正在替代该工人。

3 个答案:

答案 0 :(得分:0)

您可以尝试以下操作:

SELECT 
  CASE WHEN t2.id IS NOT NULL THEN 'T' ELSE 'F' END AS name_match, 
  COALESCE(
    t2.replacement, -- Return "replacement" if exists
    CONCAT(t1.name,' ', t1.surname) -- Otherwise return original name
  ) AS name_final
FROM table1 t1
LEFT JOIN table2 t2 ON (CONCAT(t1.name, ' ', t1.surname)) = t2.name

假设名称匹配意味着<name> <surname>中的table1 = <name>中的table2

答案 1 :(得分:0)

select 
table2.name, replacement 
from 
(select CONCAT(name, ' ', surname) as name from table1) a, table2
where 
a.name = table2.name;

table1在两个不同的列中包含名称和姓氏,而table2仅在一个列中包含全名。如果需要比较table1和table2的名称,则需要将table1的名字和姓氏连接起来,然后将其与table2的名称连接起来。

答案 2 :(得分:-1)

为此使用联接。

SELECT * FROM table1 t1 left join table2 t2 on t1.name = t2.name

它将在两个表中选择名称相同的列。
我建议您使用id而不是名称,因为id很容易处理