相关疑难解决方法(0)

使用MySQL LEFT JOIN删除行

我有两个表,一个用于工作截止日期,一个用于描述工作.每个作业都可以处于状态,一些状态意味着必须从另一个表中删除作业的截止日期.

我可以通过以下方式轻松SELECT完成符合我标准的工作/截止日期LEFT JOIN:

SELECT * FROM `deadline`
LEFT JOIN `job` ON deadline.job_id = job.job_id
WHERE `status` = 'szamlazva'
OR `status` = 'szamlazhato'
OR `status` = 'fizetve'
OR `status` = 'szallitva'
OR `status` = 'storno'
Run Code Online (Sandbox Code Playgroud)

(不status属于job表格deadline)

但是当我想删除这些行时deadline,MySQL会抛出错误.我的查询是:

DELETE FROM `deadline`
LEFT JOIN `job`
ON deadline.job_id = job.job_id
WHERE `status` = 'szamlazva'
OR `status` = 'szamlazhato'
OR `status` = 'fizetve'
OR `status` = 'szallitva'
OR `status` = 'storno'
Run Code Online (Sandbox Code Playgroud)

MySQL错误没有说明:

您的SQL语法有错误; …

mysql left-join delete-row sql-delete

176
推荐指数
5
解决办法
12万
查看次数

当另一个表中不存在匹配项时,从SQLite表中删除行

我需要删除SQLite表中的行,其中行ID在另一个表中不存在.SELECT语句返回正确的行:

SELECT * FROM cache LEFT JOIN main ON cache.id=main.id WHERE main.id IS NULL;
Run Code Online (Sandbox Code Playgroud)

但是,delete语句会从SQLIte生成错误:

DELETE FROM cache LEFT JOIN main ON cache.id=main.id WHERE main.id IS NULL;
Run Code Online (Sandbox Code Playgroud)

错误是:SQLite错误1 - 接近"左":语法错误.我可以使用另一种语法吗?

sqlite left-join sql-delete

23
推荐指数
2
解决办法
2万
查看次数

MySQL左外连接,排除属于用户的第二个表中的项目

我的MySQL数据库中有两个表,一个是数据库中所有书籍的库,另一个是包含对应于用户库中书籍的各个行.

例如:

图书馆表

 `id`        `title`...
=====        ===========
  1          Moby Dick
  2          Harry Potter
Run Code Online (Sandbox Code Playgroud)

收集表

 `id`        `user`      `book`
=====        ======      =======
  1            1            2
  2            2            2
  3            1            1
Run Code Online (Sandbox Code Playgroud)

我想要做的是运行一个查询,显示所有不在用户集合中的书籍.我可以运行此查询来显示不在任何用户集合中的所有书籍:

SELECT * 
FROM  `library` 
LEFT OUTER JOIN  `collection` ON  `library`.`id` =  `collection`.`book` 
WHERE  `collection`.`book` IS NULL
Run Code Online (Sandbox Code Playgroud)

据我所知,这很好用.在PHPMyAdmin中运行此操作将导致所有不在集合表中的书籍.

但是,如何将其限制为某个用户?例如,使用上面的虚拟数据,如果用户2运行查询,我想要书1,如果用户运行查询,则不需要书1.

只是添加一个AND user=[id]不起作用,并且由于我对JOIN语句的知识非常有限,我实际上并没有得到任何结论.

此外,返回的结果的ID(显示的查询,不执行我想要但功能正常)是0 - 如何确保返回的ID是library.id

mysql join left-join

9
推荐指数
1
解决办法
1万
查看次数

为什么我的SQL'NOT IN'子句会产生与'NOT EXISTS'不同的结果

当我希望它们产生相同的结果时,我有两个SQL查询产生不同的结果.我试图找到没有相应位置的事件数.所有位置都有一个事件,但事件也可以链接到非位置记录.

以下查询产生的计数为16244,即正确的值.

SELECT COUNT(DISTINCT e.event_id)   
FROM   events AS e   
WHERE  NOT EXISTS   
  (SELECT * FROM locations AS l WHERE l.event_id = e.event_id)    
Run Code Online (Sandbox Code Playgroud)

以下查询生成计数0.

SELECT COUNT(DISTINCT e.event_id) 
FROM   events AS e
WHERE  e.event_id NOT IN (SELECT  l.event_id FROM locations AS l)
Run Code Online (Sandbox Code Playgroud)

以下SQL对数据集进行了一些摘要

SELECT  'Event Count', 
        COUNT(DISTINCT event_id) 
        FROM events

UNION ALL

SELECT  'Locations Count', 
        COUNT(DISTINCT event_id) 
        FROM locations

UNION ALL

SELECT  'Event+Location Count', 
        COUNT(DISTINCT l.event_id) 
        FROM locations AS l  JOIN events AS e ON l.event_Id = e.event_id
Run Code Online (Sandbox Code Playgroud)

并返回以下结果

Event Count         139599 …

sql sql-server-2005

3
推荐指数
2
解决办法
1537
查看次数

标签 统计

left-join ×3

mysql ×2

sql-delete ×2

delete-row ×1

join ×1

sql ×1

sql-server-2005 ×1

sqlite ×1