我正在编写一个mysql筛选器查询,该查询具有一个主表和另一个表,该表针对主表的每个记录保存多个记录(我将其称为表子)。
我试图编写一个查询,该查询根据子表上的值获取主表的记录。如果子表条件为1,那么我将可以简单地通过加入来完成,但是我有2个条件属于同一字段。
For ex.
table 1:
id name url
1 XXX http://www.yahoo.com
2 YYY http://www.google.com
3 ZZZ http://www.bing.com
table 2:
id masterid optionvalue
1 1 2
2 1 7
3 2 7
4 2 2
5 3 2
6 3 6
当optionvalue
第二个表上只有两个不同条件都匹配时,我的查询必须返回唯一的主记录。我用IN编写查询…
select * from table1
left join table2 on table1.id=table2.masterid
where table2.optionvalue IN(2,7) group by table1.id;
这使我获得了所有3条记录,因为IN基本上是在检查“ OR”,但是在我的情况下,我不应该获得第3条主记录,因为它的值是2,6(没有7)。如果我用“
AND”写查询,则没有任何记录…
select * from table1
left join table2 on table1.id=table2.masterid
where table2.optionvalue = 2 and table2.optionvalue = 7;
这将不会返回的记录,并且会因为无法检查同一列上的不同值而失败。我想编写一个查询,以获取具有子记录的主记录,该子记录的字段optionvalues
将2和7都保存在不同的记录上。
任何帮助将非常感激。
确实,正如AsConfused所暗示的那样,您需要使用别名对TABLE2进行两次联接
- both of these are tested
:
-- find t1 where it has 2 and 7 in t2
select t1.*
from table1 t1
join table2 ov2 on t1.id=ov2.masterid and ov2.optionValue=2
join table2 ov7 on t1.id=ov7.masterid and ov7.optionValue=7
-- find t1 where it has 2 and 7 in t2, and no others in t2
select t1.*, ovx.id
from table1 t1
join table2 ov2 on t1.id=ov2.masterid and ov2.optionValue=2
join table2 ov7 on t1.id=ov7.masterid and ov7.optionValue=7
LEFT OUTER JOIN table2 ovx on t1.id=ovx.masterid and ovx.optionValue not in (2,7)
WHERE ovx.id is null
本文向大家介绍MySQL查询找到匹配项并获取记录,包括了MySQL查询找到匹配项并获取记录的使用技巧和注意事项,需要的朋友参考一下 要从记录中查找匹配项,请使用MySQL 。让我们首先创建一个表- 使用插入命令在表中插入一些记录- 使用select语句显示表中的所有记录- 这将产生以下输出- 以下是查找与ID 1和11匹配并获取记录的查询- 这将产生以下输出-
问题内容: 我的数据库表中具有以下格式的数据: 该列将来自该列的数据作为父记录。带有值的表示根项目。我需要编写查询以按以下顺序获取数据: 我需要得到根记录(与记录为0),然后是所有和这根记录,然后获得下根的记录,然后和在这个根记录等等。 问题答案: 我在这里提出的解决方案使用了物化路径的概念。以下是使用样本数据的实例化路径的示例。我希望它可以帮助您理解物化路径的概念: 每个节点都有一个实例化路径,
如何在SL4J中配置日志记录?我的项目有很多类:class1、class2、Class3....我想做两件事:将所有类记录到一个名为FILE1的文件追加器中,并具有警告级别(class1、class2、class3...)将一个名为class1的类记录到具有调试级别的名为FILE2的文件追加器中。 问题是,当我将class1的记录器配置为具有WARN级别的FILE1 appender时,我不知道如
问题内容: 我已经在hbm文件中添加了复合文件,如下所示 现在我想查询如下 我没有得到相同的结果,因为有一个引用EmployeeSignId的组合键。在这种情况下,如何创建条件查询? 我在下面尝试过但得到0条记录 问题答案: 问题已解决。 我尝试了下面的工作
问题内容: 我正在使用SQL Server 2008。 下面是一个示例记录集。 我想每次更改“值”时都要查询一次。例如,我想要第1、9、14、26、28、37和50行。 我曾尝试使用SELECT DISTINCT,但这不起作用,因为“值”列具有重复的值(即第1行和第14行)。 我已经搜索了一段时间,但没有找到解决方案。如果您有一个,请告诉我!谢谢! 问题答案: 在最新版本的SQL Server中,
在Mongodb中,我想获取那些没有任何订单的产品的数据。 集合:master_product_details、master_order_details 我使用的是普通的$lookup查询,它给出了与Order匹配或不匹配的所有记录。 还有其他方法可以得到结果吗?