select id from ( select check_date,civil_code,wrong_format_num from t_check_quality_report_kp_da where check_date = toString(toYYYYMMDD(now())) group by check_date,civil_code,wrong_format_num ) a left join t_check_quality_report_kp_da b on a.check_date = b.check_date and a.civil_code = b.civil_code 取分组后的第一个id
时间: 2023-09-05 14:11:43 浏览: 100
根据你的要求,可以使用以下 SQL 语句来实现:
```
SELECT MIN(id)
FROM (
SELECT check_date, civil_code, wrong_format_num, MIN(id) AS id
FROM t_check_quality_report_kp_da
WHERE check_date = toString(toYYYYMMDD(now()))
GROUP BY check_date, civil_code, wrong_format_num
) a
LEFT JOIN t_check_quality_report_kp_da b
ON a.check_date = b.check_date AND a.civil_code = b.civil_code
```
该语句首先将 t_check_quality_report_kp_da 表按照 check_date、civil_code 和 wrong_format_num 进行分组,并取出每组中的最小 id 值。然后将结果与 t_check_quality_report_kp_da 表进行左连接,最后取出分组后的第一个 id 值。
相关问题
bad SQL grammar [select * from ? where Report_Date = ?]
这个SQL语法片段存在问题,它试图从某个表中选择所有列,但是查询中的部分是不确定的。`[select * from ? where Report_Date = ?]` 这里有两处错误:
1. `from ?` 部分应该是表名,而不是一个问号。在SQL中,我们需要明确指定要查询的表。
2. `where Report_Date = ?` 这是一个占位符,通常用于预编译语句或动态查询,但在这种上下文中,需要一个具体的值而非另一个占位符。
正确的形式可能是这样的:
```sql
SELECT * FROM 表名 WHERE Report_Date = '指定日期';
```
如果`Report_Date`是要用户输入的数据,应该使用参数绑定,如在某些ORM框架中:
```sql
PreparedStatement pstmt = conn.prepareStatement("SELECT * FROM table_name WHERE Report_Date = ?");
pstmt.setString(1, inputDate);
ResultSet rs = pstmt.executeQuery();
```
select id from contract where sap_code =$,sap_code sql语句哪里有问题
SQL 语句中的 `$` 是一个变量占位符,应该被具体的变量值替换掉,否则会导致 SQL 语法错误。你需要将 `$` 替换成具体的变量值,例如:
```
SELECT id FROM contract WHERE sap_code = 'ABC123';
```
上面的 SQL 语句中,`ABC123` 就是变量 `$` 应该替换的具体变量值,它表示需要查询 `contract` 表中 `sap_code` 列值为 `ABC123` 的记录,并返回这些记录的 `id` 列的值。如果你要查询其他 `sap_code` 值对应的记录,只需要将 `ABC123` 替换成具体的变量值即可。
阅读全文