如何从两个不同的表中选择数据并进行比较并得到结果?
我有一张桌子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并回显替换名称。 我正在建立一个系统,该系统可以显示哪些工人今天不在工作中,以及谁正在替代该工人。
答案 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
很容易处理