INSERT INTO yq_sbcrk_qd_copy ( F_CreatorUserId, F_CreatorTime, org_code, djh, rkzl, gslb, gmsj, rcksj, rck ) SELECT F_CreatorUserId, F_CreatorTime, org_code, sb_djh, sb_rkzl, sb_gslb, sb_gmsj, sb_rksj, '入库' FROM yq_sb_rk WHERE yq_sbcrk_qd_copy.qdid = yq_sb_rk.F_Id AND yq_sb_rk.F_Id = '428513248992565445'运行以后报错以下信息Unknown column 'yq_sbcrk_qd_copy.qdid' in 'where clause'
时间: 2024-04-28 08:20:07 浏览: 85
这个错误是因为在 WHERE 子句中使用了 yq_sbcrk_qd_copy.qdid 字段,但是这个字段在表中不存在。
可能的原因是:
1. yq_sbcrk_qd_copy 表中确实没有 qdid 字段,你需要检查表结构。
2. qdid 字段名拼写错误,你需要确认字段名是否正确。
3. SQL 语句的逻辑错误,你需要检查 SQL 语句的正确性。
如果确保表结构和字段名无误,可以检查 SQL 语句的逻辑是否正确。例如,可能需要使用 JOIN 子句来将 yq_sb_rk 表与 yq_sbcrk_qd_copy 表连接起来。
相关问题
sqlsever 有表DTG_AnswerRecord其中包含字段CreatorUserId,CreatorTime 我想查 CreatorUserId连续5次IsCorrect为0的数据
在SQL Server中,如果你想查询`DTG_AnswerRecord`表中`CreatorUserId`连续5次`IsCorrect`值为0的数据,可以使用窗口函数(Window Function)和自连接(Self Join)来实现。假设`IsCorrect`字段是一个布尔类型的列,你可以尝试使用下面的SQL查询:
```sql
WITH CTE_AnswerHistory (CreatorUserId, CurrentRow, CorrectCount)
AS
(
SELECT CreatorUserId, IsCorrect,
ROW_NUMBER() OVER (PARTITION BY CreatorUserId ORDER BY CreatorTime) as RowNum
FROM DTG_AnswerRecord
)
SELECT CreatorUserId
FROM CTE_AnswerHistory AS A
JOIN CTE_AnswerHistory AS B ON A.CreatorUserId = B.CreatorUserId AND A.RowNum - B.RowNum = 4
WHERE A.IsCorrect = 0 AND B.IsCorrect = 0
GROUP BY CreatorUserId
HAVING COUNT(DISTINCT CASE WHEN B.IsCorrect = 0 THEN 1 END) >= 5;
```
这个查询首先创建了一个名为`CTE_AnswerHistory`的临时结果集,其中包含了每个用户每条记录的`CreatorUserId`、`IsCorrect`以及按用户分组的行号。然后通过`JOIN`操作找到当前用户前四次的记录,并筛选出这五次`IsCorrect`都为0的情况。
帮我修改sql SELECT * FROM `yg_dm_calltask` ORDER BY F_CreatorTime desc LIMIT (SELECT count(1) FROM base_dictionarydata )
你的 SQL 语句有语法错误,应该先查询 `base_dictionarydata` 表中的记录数,然后将其作为 LIMIT 子句的参数。可以尝试以下 SQL 语句:
```
SELECT * FROM yg_dm_calltask ORDER BY F_CreatorTime DESC LIMIT (SELECT COUNT(*) FROM base_dictionarydata)
```
上述 SQL 语句将会根据 `F_CreatorTime` 字段倒序排序,然后返回 `base_dictionarydata` 表中的记录数条记录。注意,如果 `base_dictionarydata` 表中没有任何记录,则不会返回任何结果。
阅读全文