我想知道我是否可以在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语句中对该字符串进行硬编码吗?如果是这样,我该怎么做?
答案 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,因此第一部分也必须包含它。