构建多个MySql查询条件
问题描述:
我必须构建一些复杂的mysql查询。我有一个包含一些用户信息的表格,包含3列:id,id_user,id_campo,valore。例如:构建多个MySql查询条件
- 1,1,1,“Roberto”(其中id_campo = 1用于用户名);
- 2,2,1,“Luca”;
- 3,1,2,“Windows”; (其中id_campo = 2用于所使用的OS);
- 4,2,2,“Linux”; 等。
现在,我有选择的用户其中:name = “罗伯托” 和OS =的 “Linux”,但同样的用户:
SELECT id_user WHERE (id_campo=1 AND valore="Roberto") OR (id_campo=2 AND valore="Linux").
在此示例情况下,查询返回id_user = 1和id_user = 2,但我不会得到任何结果。如何修改查询,以便可以包含“同一用户”的条件?
谢谢!
答
您需要构建两个“子查询”,然后通过用户ID加入它们。
SELECT a.id_user
from (
SELECT id_user FROM table
WHERE (id_campo=1 AND valore="Roberto")
) a,
(
SELECT id_user FROM table
WHERE (id_campo=2 AND valore="Linux")
) b
WHERE a.is_user = b.id_user
答
你有一个错误的数据库设计,但无论如何你可以usie基于id_user
select a.id_user, a.id_campo, a.valore
from my_table as a
inner join my_table as b on .id_user = b-id_user
where (a.id_campo = 1 and a.valore ='Roberto')
AND (b.id_campo = 2 and b.valore ='Linux')
你知道数据库建设是错的,就在同一个表内连接?这不是关系数据库/表应该如何工作的方式。对于不同的数据,您不使用多列关系使用相同的列。为什么你不能获取匹配'id_user'的行? – junkfoodjunkie
为什么'FROM'操作符错过? – RomanPerekhrest
为什么错了?我有一个用户表,一个“campo”表和一个“user_spec”表。因此,用户可以拥有“campo”(“Name”,“OS”,“email”,)中包含的不同user_spec值(“Roberto”,“Luca”,“Windows”,“Linux” ..)。如果它是错误的,我怎样才能修改数据库结构的最佳方式?谢谢 – cent89