如果没有匹配(如果uuid和scene_id不匹配),我的查询可能不会返回任何内容。
我的查询:
select active from likes where uuid=12 and scene_id=22
所以为了解决这个问题并在这种情况下返回0;我将其与默认值结合并添加限制1'像下面的查询;但我无法让它发挥作用!
select * from ((select active from likes
where uuid=12 and scene_id=22)as a
union all
(select 0 as 'active')as b)limit 1;
它给我一个语法错误"作为b"
在这种情况下,我做错了什么?
如果您需要更多说明,请与我们联系。
答案 0 :(得分:0)
我认为你过分使用了括号。这应该有效:
select
active
from
(select active, 0 as importance from likes
where uuid=12 and scene_id=22
union all
select FALSE, 1) x
order by importance
limit 1
请注意额外重要性列。它确保使用Active的实际值。否则,理论上可以按任何顺序返回实际行和默认行。
但我实际上同意Joe Stefanelli的评论,你的应用程序应该处理这个而不是你的查询。
答案 1 :(得分:0)
更改您的查询,如下所示(删除内部表别名)
select *
from
(
select active from likes where uuid=12 and scene_id=22
union all
select BIN(0) as 'active'
) tab limit 1;
问题是,active
是比特类型,第二选择0是INT类型。只需使用BIN()
函数将0转换为二进制表示。