Mysql 组合数据库查询
我有一个MySQL表,如下所示: ID/x_ID/x_键/x_值Mysql 组合数据库查询,mysql,database,join,Mysql,Database,Join,我有一个MySQL表,如下所示: ID/x_ID/x_键/x_值 322/4/姓名/插孔 323/5/姓名/玛丽 324/6/姓名/约翰 325/4/hide/1 326/5/隐藏/0 327/6/hide/0 我想从“隐藏”键对应于“0”值的人员中选择姓名。 在这里,这些选定的“x_值”将是玛丽和约翰 为此,我有x_id,可以在记录之间进行比较 哪个x_id对应于与x_值=“0”匹配的x_ukey=“hide” x_id都是5和6 哪些“x_值”对应于这两个x_id,其中x_key=“na
322/4/姓名/插孔 323/5/姓名/玛丽 324/6/姓名/约翰 325/4/hide/1 326/5/隐藏/0 327/6/hide/0
我想从“隐藏”键对应于“0”值的人员中选择姓名。 在这里,这些选定的“x_值”将是玛丽和约翰 为此,我有x_id,可以在记录之间进行比较 哪个x_id对应于与x_值=“0”匹配的x_ukey=“hide” x_id都是5和6 哪些“x_值”对应于这两个x_id,其中x_key=“name”?玛丽和约翰 换句话说,我试图得到一个将这两个查询混合在一起的查询,以便只得到Mary和John: 查询A:
SELECT
x_id,
x_value
FROM
mytable
WHERE
x_key='name'
SELECT
x_id
FROM
mytable
WHERE
x_key='hide'
AND
x_value='0'
查询B:
SELECT
x_id,
x_value
FROM
mytable
WHERE
x_key='name'
SELECT
x_id
FROM
mytable
WHERE
x_key='hide'
AND
x_value='0'
我只是找不到正确的方法。
我该怎么办
我真的很抱歉这样解释,但我不是英国人,这很难解释。如果我理解了您的意思,您希望选择具有特定
x_键的元素,该键具有x_值='0'
,并且没有隐藏(x_键!=“hide”
)
编辑(根据您的编辑):
旧答案(编辑前):
如果我理解你的意思是正确的,你需要将2个“选择”与不同的“位置”状态结合起来。您可以使用“或”语句
SELECT x_id,x_value FROM mytable WHERE x_key='name' OR x_key='hide' AND x_value='0'
应该使用join连接表的两个实例—一个用于名称,另一个用于“隐藏”
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;
虽然这会起作用,但我认为将两种类型的数据放在同一个表中不是一个好做法。我建议您将其拆分为两个表—一个用于名称,一个用于隐藏您的表结构是什么?id-x_id-x_key-x_值。谢谢x\u id是外键
。。。到哪个表格?对不起,我编辑了我的帖子以使事情更清楚。如果你的意思不同,请相应地更新你的问题,提供更多信息。我编辑了问题。我希望这次会更清楚。我真的尽力了。谢谢你的帮助。我试图从这个表中检索数据,但不是我创建的。事实上,这是Wordpress postmeta表。。。这是一个通用表,插件创建者可以利用它,而不会弄乱数据库。这并不理想,但它允许插入几乎所有内容(key=>value),而无需更改表结构本身。我会试试你的问题,然后再给你回复。谢谢。不是这样,不过还是谢谢你。如果你想知道这是怎么回事,请参阅更新的问题。