1

我有一个 Joomla (3.9.13) 数据库,其中包含一个名为 的表fields_values,它是一个非规范化的键值存储(有人告诉我)。它包含以下数据;

+----------+---------+--------+
| field_id | item_id | value  |
+----------+---------+--------+
| 6        | 119     | bloggs |
| 17       | 119     | 1      |
| 19       | 119     | 45     |
| 21       | 119     | 55     |
| 17       | 119     | 14     |
| 17       | 119     | 100    |
+----------+---------+--------+

当我运行此查询时;

SELECT `field_id`
     , `item_id`
     , `value` 
  FROM `fields_values` 
 WHERE `field_id` IN (6,17) AND `item_id` = '119'

我得到了这些结果;

+----------+---------+--------+
| field_id | item_id | value  |
+----------+---------+--------+
| 6        | 119     | bloggs |
| 17       | 119     | 1      |
| 17       | 119     | 2      |
| 17       | 119     | 13     |
| 17       | 119     | 14     |
| 17       | 119     | 100    |
+----------+---------+--------+

一切看起来都很好,但是当我运行这个查询时(省略6fromIN子句);

SELECT `field_id`
     , `item_id`
     , `value` 
  FROM `fields_values` 
 WHERE `field_id` IN (17) AND `item_id` = '119'

我得到结果。

我本来期望得到以下结果;

+----------+---------+--------+
| field_id | item_id | value  |
+----------+---------+--------+
| 17       | 119     | 1      |
| 17       | 119     | 2      |
| 17       | 119     | 13     |
| 17       | 119     | 14     |
| 17       | 119     | 100    |
+----------+---------+--------+

我也试过这个简单的查询版本;

SELECT 
    `field_id`, 
    `item_id`, 
    `value` 
FROM 
    `o3m0z_fields_values` 
WHERE
    `field_id` = 17 
AND 
    `item_id` = '119'

我得到结果。

这是从 HeidiSQL 获取的表信息;

在此处输入图像描述

我试图在新的 Joomla 安装上复制它,但我不能。为什么会这样?

注意:我无法更改查询,因为它是由核心 Joomla 系统生成的。

4

0 回答 0