3

我有下表包含 3 列,这只是一个示例(不是真实的)

Number Decription Value
1 Green 100
1 Yellow 101
1 Blue 102
2 Chair 200
2 Table 101
2 Green 150
3 Car 200
3 plane 205
3 green 105

我的第一个查询是查找包含值“101”的任何记录或行在这种情况下没问题我找到 2 条记录 [1, Yellow,101] 和 [2, table, 101] 以及编号为 3 的所有记录,其余记录被忽略只是完美的。现在我需要根据 FIRST 查询的 RESULT 选择其他记录,数字 1 和 2 是真实结果。因此,在这种情况下,我从列 [number] 中找到了 [1 和 2],我想搜索并添加任何 description = [green] 的值。仍然忽略具有 NO [101] 值的 [3]。

我想要显示的理想结果是

[1, yellow, 101] and Green is 100
[2, table, 101] and Green is 150

到目前为止,我很难让它工作,没有好的结果。如果有人知道如何为这种情况制作脚本,请告诉我。我希望问题很清楚。

PS表格的内容是假的,只是为了得到一个印象,它是SQL + PHP。

4

3 回答 3

2

尝试这个:

select 
  concat('[', concat_ws(', ', s1.number, s1.description, s1.value), '] and ', s2.description, ' is ', s2.value)
from 
  sample s1
inner join 
  sample s2 on s2.number = s1.number
where 
  s1.value = 101 and 
  s2.description = 'Green'

SQL 小提琴演示

于 2012-10-25T22:18:10.517 回答
0

我已经看到了很多,但它显示了 blanco 领域:(.. 但是今天早上我在喝了这么多咖啡后做了很多测试,我认为我想做的事情没有意义。因为如果我找到记录 [1 , yellow, 101] 基于条件值“101”,那么不可能按照我的意愿添加内容字段 [Green],因为 number[1] 匹配 [101] 和 [Green]。我尝试了“OR”但它也发现记录 [3 green, 105] 不好,因为 3 没有 [101] 数据。我知道这是一个疯狂的谜题。所以现在我想添加另一个表,该表将具有唯一编号 1,2 和3 并且该数字应对应于表样本的第一列,只有样本具有 1 的 2 和 3 等的重复项。如果我这样做,可能会有一个可行的条件,我可以在一行或列表中显示数据,如下所示==> 1,黄色,101,绿色,100。我不想放弃:(

于 2012-10-26T09:22:12.197 回答
0

尝试这个。我认为这就是你想要做的。

编辑。您是否只想获得“绿色”?

SELECT * from table WHERE table.Number IN (
    SELECT Number FROM table WHERE table.Value = 101
) AND table.Description = "Green";
于 2012-10-25T21:27:04.460 回答