mysql> SELECT
-> IF(status='EndSP',reportId,'') as 'reportId_EndSP'
-> FROM T_Name LIMIT 10;
+--------------+
| reportId_EndSP |
+--------------+
| |
| |
| 270241 |
| |
| 270242 |
| |
| |
| 270244 |
| |
| |
+--------------+
10 rows in set (0.00 sec)
But i need to return only the row where status = 'EndSP'
我不需要执行else子句。MySQL的IF子句问题
我可以简单地实现,通过编写
SELECT reportId FROM T_Name where status='EndSP';
,但我需要做它用,如果还是如此。
编辑/ UPDATE
我的实际查询看起来像
SELECT
-> IF(status='EndSP',reportId,'') as 'reportId_EndSP',
-> IF(status='EndSP',createdTS,'') as 'createdTS_EndSP',
-> IF(status='BeginSP',reportId,'') as 'reportId_BeginSP',
-> IF(status='BeginSP',createdTS,'') as 'createdTS_BeginSP'
-> FROM T_Name HAVING reportId_EndSP!='' AND reportId_BeginSP!='' LIMIT 10;
那么,有没有其他办法可以做到这一点无覆盖t使用where子句..? –
你可以使用'HAVING'子句,但它会是特殊的。您可以用编程语言筛选结果,并将其接收。或者你可以在主选择上使用select并在那里添加一个WHERE子句。 –