遗憾的是,一个简单的选择查询剥夺了我的广度。我正在创建一个警报工具,它可以在数据库凭据过期时发出警报。该工具可以在 MSSQL 和 MySQL 上执行此操作。在 MySQL 中,我选择具有列默认值的列。如果该查询添加在 * 之后,则该查询有效。但如果在 *.
之前添加,则会引发语法错误示例:
以下查询有效。
select * , 'apple' from mysql.user
但是下面的查询出错了。
select 'app' , * from mysql.user
出现以下错误。
Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '* from mysql.user' at line 1
请告诉我我的查询有什么错误。如果您对我的实际业务案例感兴趣,下面是我试图找到其对应的 MySQL 查询的 Oracle 查询。变量 {1}、{2} 等的值将从 C# 代码传递。
select
'{0}' as FK_APP_ID,
'{1}' as IP,
'{2}' as ORA_SCHEMA,
username as LoginName,
account_status as IsExpired,
to_date(expiry_date, 'dd-mm-yy') - to_date(SYSDATE, 'dd-mm-yy') as DaysUntilExpiration,
profile as Profile,
expiry_date as ExpiryDate from dba_users
在 MySQL 中,您不能在
*
查询中的 SELECT
之前放置静态值,这会导致语法错误。您可以按如下方式使用查询:
SELECT *, 'app' AS static_value FROM mysql.user;