我要么变老,要么我需要写的查询变得越来越复杂。以下查询将获得与该用户关联的所有tasks
。合并两个SELECT查询
"SELECT `date`
FROM `tasks`
WHERE `user_id`= 1;"
的tasks
表是(id
,date
,user_id
,url_id
);
现在,我需要以及记载,url_id
联营公司与用户线槽
`urls` table (`id`, `user_id`)
的独立查询应该是这样的:
"SELECT `t1`.`data`
FROM `tasks` `t1`
JOIN `urls` `u1` ON `u1`.`id` = `t1`.`url_id`
WHERE `u1`.user_id` = 1;"
虽然,是否有可能合并这两个查询放入单个查询中?我的逻辑说它应该是,虽然我不知道如何去做实际的JOIN。
在上次查询中,你的意思是“数据”或“日期”吗?另外,如果您没有从URL表中选择任何数据,您是否真的需要加入它? (答案可能是“是的,以确保有该用户标识的URL条目”。)以及为什么有这么多的反标记;它与MS SQL Server和方括号一样糟糕! –
我在路上写了查询,所以我自然留下了一些错误。你是对的,它必须是'日期'而不是'数据'。我通常会忽略关于“back-ticks”的评论,尽管你有很高的声誉,所以我有点好奇你为什么说“它和MS SQL Server和方括号一样糟糕”?反引号的目的本身就是为了确保MySQL服务器能够快速识别表名和列名,并避免在使用保留关键字(例如嵌套集合中的“left”或“right”)时发生混淆。 – Gajus
MS SQL Server用户对方括号做出了相同的说明。它看起来很丑,而且完全没有标准。没有其他数据库管理系统支持SQL标准所称的“分隔标识符”的反标记或方括号,标准中所使用的标识符是用双引号括起来的;单引号是为字符串保留的。不同的DBMS对于可以使用关键字的地方有不同的规则。我使用的主要功能是在许多地方使用关键字作为标识符。避免使用关键字作为标识符最好避免使用引号。 –