我的mysql数据库中有2个表
1用于注册所有具有ID自动增量的个人信息 2表示具有值的某个属性,并且具有ID_Anagrafica = ID
我的问题是:如果我想在第一个表中仅在第二个表中搜索具有某个属性值的注册表,我该怎么做?
示例:
具有值的属性的第二个表:
ID_Anagrafica
与ID
registry
匹配
有一个查询在第二个表上使用where子句返回ID:
SELECT *
FROM "first table"
WHERE "secondTable".valore = "value"
AND "secondTable".valore = "value";
答案 0 :(得分:1)
这将是一种方式...... in的值和count的值可以是传入的变量,因为你总是知道你传入的值和有多少值。
SELECT *
FROM First A
INNER JOIN (SELECT ID_anafrafica
FROM Second
WHERE Valore in ('value1','Value2')
Group by ID_anafrafica
having count(ID_Anafrafica) = 2) B
on A.ID = B.ID_anafrafica
我对此不感兴趣的是你不会忘记ID_Attributo,如果你正在寻找属性的价值,我认为你应该这样做
与为每个元素添加额外的连接相比,这在性能和可维护性方面应该更好。
答案 1 :(得分:0)
您应该使用JOIN。
SELECT a.* FROM "first table" AS a <br>
JOIN "second table" AS b ON a.ID = b.ID_Anagrafica <br>
WHERE b.valore = "value" <br>
GROUP BY a.ID;