之前可能已经提出过这个问题,但我真的不知道要搜索哪些措辞。
我有一个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 */
}
答案 0 :(得分:1)
您可以自行加入表格:
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'
答案 1 :(得分:0)
你在sql中翻译的内容是:
SELECT b.*
FROM table_a a
INNER JOIN table_a b ON a.id = b.id
WHERE a.fieldName = 'title'
AND a.fieldValue = 'someTitle'
AND a.fieldValue <> b.fieldValue
这会使table_a中的行与您具有预定义值的行具有相同的id,但具有不同的fieldValue。这假设id不是主键,否则不会有另一行具有相同的id,但它在你的问题中看起来并非如此。 (如果要检查特定值,可以执行以下操作:AND b.fieldValue = 'someValue'
在最后一行)