mysql在select语句中创建一个硬编码值

时间:2015-02-02 16:29:56

标签: mysql

我想知道我是否可以在select语句中对值进行硬编码。我有以下用于生成列表的mysql查询。

我使用concat来构建此字符串作为创建列表的一部分。 但是,现在我需要生成一个未知的'记录为列表的一部分。

例如:

20(ABC Object #20)
24(DEF Object #24)

我想添加' UKNOWN'到列表的顶部:

--(UNKNOWN -- )
20(ABC Object #20)
24(DEF Object #24)

这是我到目前为止所做的:

SELECT CAST(p.Serial AS UNSIGNED INTEGER) as Serial, 
p.Object_ID, 
p.Part_ID, 
st.Description AS ObjectDesc, 
s.Object_Num, 
concat(Serial,' (',st.Desc,' #',s.Object_Num,')') as DropList 
FROM Parts p LEFT JOIN Objects s ON p.Object_ID = s.Object_ID 
LEFT JOIN ObjectTypes st ON s.ObjectType_ID = st.ObjectType_ID 

我可以在select语句中对该字符串进行硬编码吗?如果是这样,我该怎么做?

1 个答案:

答案 0 :(得分:1)

如果我理解正确,你想要一个新行。你可以使用UNION

SELECT "" as Serial,
   "" as Object_ID,
   "" as ObjectDEsc,
   "" as Object_Num,
   "--(UNKNOWN -- )" as DropList
UNION
 SELECT CAST(p.Serial AS UNSIGNED INTEGER) as Serial, 
  p.Object_ID, 
  p.Part_ID, 
  st.Description AS ObjectDesc, 
  s.Object_Num, 
  concat(Serial,' (',st.Desc,' #',s.Object_Num,')') as DropList 
 FROM Parts p LEFT JOIN Objects s ON p.Object_ID = s.Object_ID 
 LEFT JOIN ObjectTypes st ON s.ObjectType_ID = st.ObjectType_ID 

在联合查询中,每个部分必须选择相同的列。由于您的原始查询包括Serial,Object_ID,Part_ID和ObjectDesc,因此第一部分也必须包含它。