Php SQL查询:我需要两个查询还是可以使用嵌套子查询

Php SQL查询:我需要两个查询还是可以使用嵌套子查询,php,mysql,sql,Php,Mysql,Sql,这个问题以前可能被问过,但我真的不知道用什么样的措辞来搜索 我有一个mysql数据库,它有一个包含3列[ID、fieldName和fieldValue]的表,用于描述另一个表中对象的属性。ID字段在另一个表中存储对象的外键,fieldName和fieldValue存储标题、描述、文件大小和摘要等内容 我试图编写一个查询,返回一个fieldName和fieldValue对匹配已知值的行,并且返回的行ID在另一行中有另一个不同的fieldValue。现在我通过两个查询和一个if语句来完成它。以下是s

这个问题以前可能被问过,但我真的不知道用什么样的措辞来搜索

我有一个mysql数据库,它有一个包含3列[ID、fieldName和fieldValue]的表,用于描述另一个表中对象的属性。ID字段在另一个表中存储对象的外键,fieldName和fieldValue存储标题、描述、文件大小和摘要等内容

我试图编写一个查询,返回一个fieldName和fieldValue对匹配已知值的行,并且返回的行ID在另一行中有另一个不同的fieldValue。现在我通过两个查询和一个if语句来完成它。以下是sudo代码:

$result = SELECT * FROM table_a WHERE fieldName = 'title' and fieldValue = 'someTitle'
$test = SELECT * FROM table_a WHERE fieldValue = 'someValue' and id = '{$result['id']}'
if ($test) {
  /* Result Found */
}

您所说的sql翻译为:

选择b.*
从表a
a.id=b.id上的内部联接表
其中a.fieldName='title'
和a.fieldValue='someTitle'
和a.fieldValue b.fieldValue

这将获取表_a中与具有预定义值的行具有相同id但具有不同fieldValue的行。这假设id不是主键,否则将不会有另一行具有相同的id,但在您的问题中,情况似乎并非如此。(如果要检查特定值,可以执行以下操作:
和b.fieldValue='someValue'
,在最后一行)

您可以自行加入表:

SELECT * FROM table_a AS s1 
JOIN table_a AS s2 USING (id)
WHERE
    s1.fieldName = 'Title' AND s1.fieldValue = 'someTitle'
    AND s2.fieldValue = 'someValue'

两者都不是-给出你展示的例子,你永远不会得到任何结果<代码>表a.fieldValue不能同时等于'someTitle'和'someValue'。请给出实际例子以获得帮助。您可能需要一个联接,或者仅仅是一个基本查询,这取决于您实际尝试执行的操作。fieldName和fieldValue是两个不同的列,它们可以同时具有不同的值,但fieldValue使用了两次。看看你写的查询。您实际上是这样做的:
其中fieldName='title'和fieldValue='someTitle'和fieldValue='someValue'
将永远不会返回任何行。(
其中a=1、b=2和b=3
)因此,我建议您向我们展示一些实际值。不,这两个SQL语句是单独的查询。第一个用于获取ID号,第二个用于查看具有该ID的记录在fieldValue中是否具有特定值。您真的没有看到问题吗?让我们看看真正的列名。我知道你在运行两个查询。但是如果您选择一行,其中fieldName='title'和fieldValue='someTitle',假设它的ID是5。然后选择其中id=5和fieldValue='someValue',您将永远无法返回一行。