我有两个表,一个用于工作截止日期,一个用于描述工作.每个作业都可以处于状态,一些状态意味着必须从另一个表中删除作业的截止日期.
我可以通过以下方式轻松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语法有错误; …
我需要删除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 - 接近"左":语法错误.我可以使用另一种语法吗?
我的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?
当我希望它们产生相同的结果时,我有两个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 …