合并数据库查询

时间:2015-11-07 18:57:25

标签: mysql database join

我有一个MySQL表,如下所示:

ID / X_ID / x_key / X_VALUE

4分之322/名称/插座

5分之323/名称/玛丽

6分之324/名称/约翰

4分之325/隐藏/ 1

5分之326/隐藏/ 0

6分之327/隐藏/ 0

我想从“隐藏”键对应于“0”值的人中选择名称。 这里选择的“x_values”将是 Mary和John

为此,我有可以在记录之间进行比较的x_id。

哪个x_id对应于与x_value =“0”匹配的x_key =“hide”?

x_id的5和6都是。

哪个“x_values”对应于这两个x_id,其中x_key =“name”?玛丽和约翰

换句话说,我试图获得一个混合这两个查询的查询,以便只获得Mary和John:

查询A:

SELECT 
    x_id,
    x_value 
FROM 
    mytable 
WHERE 
    x_key='name' 

查询B:

SELECT 
    x_id 
FROM 
    mytable 
WHERE 
    x_key='hide' 
AND 
    x_value='0'

我只是找不到正确的方法。 我怎么能?

我真的很抱歉这个解释,但我不是英国人,而且很难解释。

3 个答案:

答案 0 :(得分:1)

如果我理解你是正确的,你想要选择具有x_key x_value = '0'x_key != 'hide'且未隐藏(SELECT bb.x_value FROM mytable AS aa INNER JOIN mytable AS bb ON aa.x_id = bb.x_id WHERE aa.x_key = 'hide' AND aa.x_value = 0 AND bb.x_key = 'name'; )的元素。

编辑(根据您的编辑):

SQL Fiddle

SELECT x_id, x_key, x_value
FROM mytable
WHERE x_key='name' AND x_key != 'hide' AND x_value = '0'

OLD ANSWER(在您编辑之前):

android:focusable="true"
android:focusableInTouchMode="true"
android:descendantFocusability="beforeDescendants"

答案 1 :(得分:1)

你应该使用join来连接表的两个实例 - 一个用于名称,一个用于'hides'

select n.x_id, n.x_value from mytable as h inner join myable as n on 
h.x_id = n.x_id where n.x_key = 'name' and h.x_key = 'hide' and H.x_value = 0;

虽然这会起作用,但我认为在同一个表中使用两种类型的数据并不是一个好习惯。我建议你把它分成两个表 - 一个用于名称,一个用于隐藏

答案 2 :(得分:0)

如果我理解你是正确的,你想要将''SELECT'与不同的'WHERE'法则结合起来。您可以使用“OR”语句

SELECT x_id,x_value FROM mytable WHERE x_key='name' OR x_key='hide' AND x_value='0'