如何在同一查询中基于布尔值显示或隐藏列?我使用的应用程序允许JavaScript放在双花括号之间,布尔值将由此产生。
我正在想象这样的解决方案:
SELECT
accounts.email,
IF( {{my JavaScript will return a boolean here}} )
accounts.zip
WHERE accounts.email = 'none@none.com';
如果布尔值为true,则结果为:
+---------------+-------+
| email | zip |
+---------------+-------+
| none@none.com | 20500 |
+---------------+-------+
如果布尔值为false,则结果为:
+---------------+
| email |
+---------------+
| none@none.com |
+---------------+
这可能吗?
您不能在SQL本身中动态更改要选择的列;您必须在应用程序级别执行此操作。因此,如果您需要遵循现有代码中的模式,则必须使用JavaScript而不是SQL来分配列:
var query =
`SELECT
accounts.email
{ booleanResult ? ', accounts.zip' : '' }
FROM myTable
WHERE accounts.email = 'none@none.com'`
这样,当布尔值为true时,查询为SELECT accounts.email, accounts.zip FROM ...
。如果为false,则查询为SELECT accounts.email FROM ...
。