我正在用MySQL
进行查询以保存返回的所有对象,但我想根据块WHERE
的语句识别这些对象,也就是说,如果确定的对象满足特定的特性我想创建一个列,在这个列中,如果满足或不满足这些特性,我会在对应的行中赋值0或1。
这是我的剧本:
SELECT
s.id, al.ID, al.j, al.k, al.r, gal.i
FROM
datas as al
WHERE
AND s.id = al.ID
AND al.j between 1 and 1
AND al.k BETWEEN 15 and 16
AND al.r BETWEEN 67 and 72
上面的脚本工作正常,我可以保存它返回的所有对象。
所以,我想知道是否有一种方法可以在上面的查询中添加块WHERE
,以下语句,
( Flags & (dbo.environment('cool') +
dbo.environment('ok') -
dbo.environment('source')) ) = 25
and ((al_pp x al_pp1)-0.5/3=11
并确定在表中保存的新列中使用0或1满足或不满足这些条件的对象。
我阅读了一些有关此内容的教程,并看到了IF
,CASE
,ADD COLUMN
或WHEN
的一些尝试,但这些都没有解决。
提前致谢
答案 0 :(得分:1)
MySQL具有if功能,请参阅here
因此,您只需在查询中使用它:
SELECT IF(( Flags & (dbo.fPhotoFlags('SATURATED') +
dbo.fPhotoFlags('BRIGHT') +
dbo.fPhotoFlags('EDGE')) ) = 0
and petroRad_r < 18
and ((colc_u - colc_g) - (psfMag_u - psfMag_g)) < -0.4
, 1 --// VALUE IF TRUE
, 0 --// VALUE IF FALSE
) as conditional_column, ... rest of your query