一个查询,返回基于其他列的1列中的2个值

时间:2019-08-27 05:06:11

标签: mysql

我需要创建一个SQL查询,该查询根据该列中的值以及其他列中的一个列返回多个值。 我有2张桌子 table 1 Table 2

我当前的查询是

SELECT title, id, value, item_id, catid, created, field_id, alias
FROM gewtk_content p
INNER JOIN gewtk_fields_values ON p.id = item_id
WHERE `value` = 'Jessica' AND `title` REGEXP '/ESD' 
AND `state` = '1' AND (`field_id` = '265' 
OR `field_id` = '297' OR `field_id` = '301' 
OR `field_id` = '301' OR `field_id` = '302' 
OR `field_id` = '303' OR `field_id` = '304')

按预期工作 但是,我还需要返回“值”列中的条目,其中field_id = 186和与上述查询结果中的item_id相匹配的item_id条目。在这种情况下,item_id = 532 因此,使用表中的数据和上面的查询,结果将是

<table style="height: 108px;" width="740">
<tbody>
<tr style="height: 31px;">
<td style="width: 75.7833px; height: 31px;">title</td>
<td style="width: 75.7833px; height: 31px;">id</td>
<td style="width: 75.7833px; height: 31px;">value</td>
<td style="width: 75.7833px; height: 31px;">item_id</td>
<td style="width: 75.7667px; height: 31px;">cat_id</td>
<td style="width: 75.7833px; height: 31px;">created</td>
<td style="width: 75.7667px; height: 31px;">field_id</td>
<td style="width: 75.7833px; height: 31px;">alias</td>
</tr>
<tr style="height: 39.7333px;">
<td style="width: 75.7833px; height: 39.7333px;">positive/ESD</td>
<td style="width: 75.7833px; height: 39.7333px;">532</td>
<td style="width: 75.7833px; height: 39.7333px;">jessica</td>
<td style="width: 75.7833px; height: 39.7333px;">532</td>
<td style="width: 75.7667px; height: 39.7333px;">24</td>
<td style="width: 75.7833px; height: 39.7333px;">2019-04-03 05:41:3</td>
<td style="width: 75.7667px; height: 39.7333px;">265</td>
<td style="width: 75.7833px; height: 39.7333px;">positive-esd-18</td>
</tr>
</tbody>
</table>
在此示例中,我需要在value列中添加此字段,其中field_id = 186和item_id = 532,为“已关闭” 我看不到这是怎么可能的,因为我需要在1行的值列中显示2个条目。

1 个答案:

答案 0 :(得分:0)

您可以第二次加入表1,并将第二个所需的值加上或加到where子句中。现在,每个查询将收到两行。为了避免这种情况,您可以在最后使用group by子句。对于(结果)列,您将使用串联。当然,这只是一个选择,我不确定是否最好。

您可以打开一个sqlfiddle,其中包含一些正在播放的数据,这些数据可以更轻松地为您提供帮助。