我需要创建一个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行的value列中显示2个条目。

最佳答案

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

您可以使用一些正在播放的数据打开sqlfiddle,从而更轻松地为您提供帮助。

关于mysql - 一个查询,根据其他列从1列返回2个值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/57667967/

10-11 03:26
查看更多