SELECT cardName, revision, moduleName, groupName, group_concat( parameter ORDER BY position ) AS sorted_params FROM operationcardparameter WHERE cardName = 'test111' GROUP BY cardName, revision, moduleName, groupName,如何比较sorted_params一样
时间: 2023-03-19 10:24:44 浏览: 122
我不知道如何比较sorted_params一样,但是可以使用SQL语句"SELECT * FROM operationcardparameter WHERE cardName = 'test111' ORDER BY position"来查看这个cardName下的所有参数,并且可以通过比较它们的position来比较sorted_params是否一样。
相关问题
mysql数据库有一个operationcardparameter表,其有cardName,revision,moduleName,groupName,position,parameter,5个字段,parameter是json字段,如何将cardName,revision,moduleName,groupName一样的数据的parameter根据position排序组合成一个字段
你可以使用 MySQL 的内置函数 GROUP_CONCAT() 和 JSON_EXTRACT() 来实现这个功能。
假设你的表名为 operationcardparameter,以下是一个示例查询:
```sql
SELECT
cardName,
revision,
moduleName,
groupName,
GROUP_CONCAT(JSON_EXTRACT(parameter, CONCAT('$.', position)) ORDER BY position) AS sortedParameters
FROM
operationcardparameter
GROUP BY
cardName,
revision,
moduleName,
groupName;
```
在上面的查询中,GROUP_CONCAT() 函数将按照 position 字段排序的 JSON 参数值连接成一个字符串,然后使用 JSON_EXTRACT() 函数从参数中提取指定位置的值。最后,使用 GROUP BY 子句将所有具有相同 cardName、revision、moduleName 和 groupName 的行分组。
你可以将查询结果保存到新表或视图中,以便稍后使用。
SQL: INSERT INTO cardtype ( cardid, cardname, cardprice, duration, discount ) VALUES ( ?, ?, ?, ?, ? ) ### Cause: com.microsoft.sqlserver.jdbc.SQLServerException: 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'cardtype' 中的标识列插入显式值。 ; 当 IDENTITY_INSERT 设置为 OFF 时,不能为表 'cardtype' 中的标识列插入显式值。] with root cause
这个错误出现在 SQL Server 数据库中,它的意思是在执行插入语句时,尝试为自增长标识列插入显式值,而在表中设置了该列为自增长标识列。这是因为当 IDENTITY_INSERT 设置为 OFF 时,不允许手动为自增长标识列插入值。
解决方法是在执行插入语句之前先执行以下语句:
```
SET IDENTITY_INSERT cardtype ON;
```
执行完插入语句后,再执行以下语句将 IDENTITY_INSERT 设置回 OFF:
```
SET IDENTITY_INSERT cardtype OFF;
```
这样就可以成功插入数据了。注意,只有在需要手动插入自增长标识列的情况下才需要使用 SET IDENTITY_INSERT。