如果两个表都有行,MySQL查询仅返回结果

沃恩·达布尼

问题:在我的mysql数据库中,我有两个表listshare名单表有所有的待办事项用户所创建的:

“列表”表

股份表存储已经从一个用户共享给其他所有的名单:

“份额”表

我要做的是获取用户的所有列表,包括他们创建的列表以及他们有权访问的共享列表。当前,当shares表中有一个条目时,我有一条select语句可以完美地工作(它是否与我要检索结果的特定用户无关)。

一旦我从shares表中删除了结果并尝试使用相同的多表SELECT语句,我就没有结果,而且我也弄不清原因。

这是我正在使用的SELECT语句:

SELECT DISTINCT `lists`.* FROM `lists`,`shares` WHERE `lists`.user_id = '$userid' OR (`shares`.sharedwith_id = '$userid' AND `lists`.id = `shares`.list_id) ORDER BY `lists`.datecreated DESC

与查询有关的任何帮助都将非常棒。我看过JOIN,但是还没有看到比我所拥有的更有效的东西。

Stavr00

您确实应该使用JOIN而不是WHERE子句:

SELECT DISTINCT `lists`.* 
FROM `lists`
LEFT JOIN `shares`
ON `lists`.`id`=`shares`.list_id AND `lists`.`user_id`=`shares`.`sharedwith_id`
WHERE `lists`.`id` = ?

最后,避免SQL注入攻击:切勿在SQL中嵌入参数。将参数作为参数传递。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

MySql 慢查询,在两个表上都有一个连接和条件

Mysql 将两个表合并为一个输出但结果子查询返回多于 1 行

MySQL - 从两个表中返回没有两个值的行

比较两个查询的结果并返回缺少的行

MYSQL从两个查询(不是表)中仅选择匹配的记录,然后按B查询对结果进行排序

Django:从两个mysql表将结果返回JSON

根据没有连接的两个表查询结果

连接两个表返回空白,如果没有找到MYSQL

如何从两个查询中仅返回一个查询结果

从table1以及mysql中的table2中选择所有结果,其中两个表都有一个公共ID

MySQL:查询另一个查询结果并返回两个结果?

SQL查询,用于从两个表返回行

如果子查询没有结果,MySQL应该返回行

MySQL子查询选择二级表中的最大值,两个表中都有条件

MYSQL查询以返回两个DATETIME字段之间的行

结合两个mysql查询返回ok而不是行

MySQL查询返回两个日期范围之间的行

mysql查询加入,比较两个表并返回第一个表中的所有记录

当结果仅保留属性有效的开始日期时,如何在两个日期之间进行MySQL查询?

如何查询具有相同字段的两个表,仅当字段值相同时才返回id

SQL:组合具有公共列但每个都有自己特定的唯一列的两个查询结果

两个mysql查询结果的差异

查询返回两个表的并集

更好的查询两个表上的LEFT JOIN并仅获得匹配的结果

跨两个表的SQL查询仅显示每个标记地址的最新更新结果

vba计算两个单元格中日期之间的天数,仅当两个单元格中都有日期时才返回值

比较两个表并仅返回具有不同值的行-根据建议进行编辑,谢谢

如何使两个查询中的两个结果(具有相同的列)显示在单个查询表中

mysql查询返回两个结果而不是一个