我想避免我的查询有一些冗余代码。这是一个非常简单的例子,可以用来做什么:
SELECT
p.id,
p.NOM,
CONCAT(p.NANE,'_2') AS CLONE ,
(SELECT id FROM person WHERE NAME = CONCAT(p.NOM,'_2') )
FROM person p
我有两次相同的代码:
CONCAT(PERSON.NAME,'_CLONE')
维护起来并不容易(上面的代码只是我正在尝试做的一个简单示例)。
是否有解决方案可以获得相同的结果(在MySQL中运行(使用v14.14测试)):
SELECT
p.id,
p.name,
CONCAT(p.name,'_clone') as CLONE ,
(SELECT ID FROM person WHERE name = CLONE) AS CLONE_ID
FROM person p
此代码不适用于Oracle 11.2.0.2.0 我是oracle的新手,所以我不知道上面的MySQL SQL代码的翻译是什么:s
你能帮我找一个好的写作方式吗?
答案 0 :(得分:5)
我建议使用内联视图:
SELECT p.id,
p.name,
c.name clone_name,
c.id clone_id
from person p
join
(SELECT id, concat(name, '_clone') name FROM person) c
on p.name = c.name