我的问题是用SQL Server中的密钥替换。任何人都可以给我一个查询吗?
感谢您的回答!
Table1
:
ID | Code | Des | more columns
---+------+-----+-------------
1 | 100 | a | ...
2 | 200 | b | ...
3 | 300 |data3| ...
Table2
:
ID | Code | Des
---+------+------
1 | 100 | data1
2 | 200 | data2
结果必须是:
ID | Code | Des | more columns
---+------+-----+-------------
1 | 100 |data1| ...
2 | 200 |data2| ...
3 | 300 |data3| ...
答案 0 :(得分:2)
使用JOIN
。
<强>查询强>
SELECT t1.ID, t1.Code,
CASE WHEN t1.Des LIKE 'data%' THEN t1.Des ELSE t2.Des END AS Des
FROM Table1 t1
LEFT JOIN Table2 t2
ON t1.ID = t2.ID;
答案 1 :(得分:2)
执行LEFT JOIN
,如果没有table2.Des值,请改用table1.Des:
select t1.ID, t1.Code, coalesce(t2.Des, t1.Des), t1.more Column
from table1 t1
left join table2 t2 on t1.code = t2.code
或者,也许你想要这个:
select * from table2
union all
select * from table1 t1
where not exists (select 1 from table2 t2
where t2.code = t1.code)
即。返回table2行,如果代码在table1中而不在table2中,则返回该行。
答案 2 :(得分:2)
试试这个:
SELECT Table1.ID,
Table1.Code,
ISNULL(Table2.Des, Table2.Des) AS Des
FROM Table1
LEFT OUTER JOIN Table2
ON Table1.Code = Table2.Code;
你说“如果代码在2表中常见”那么加入代码而不是ID
答案 3 :(得分:0)
好的,所以你想要Table1的所有结果,但要使用&#39; Des&#39;中的值。什么时候可以从Table2获得?你想做这样的事情;
null