gpt4 book ai didi

mysql - 使用表 B 中的值访问表 A 的列值

转载 作者:行者123 更新时间:2023-11-30 23:07:08 25 4
gpt4 key购买 nike

我有两个表,分别是 ABC 和 XYZ,

表 ABC:

B   C   ID    ABC_ID
====================
50 30 10 2
60 31 11 3

注意:所有值字段都是整数。

XYZ 表:

group   condition    value   ID
================================
B = 50 10
C > 30 11

注意:

  1. B 列和条件是 varchar 字符串和值,ID 列是整数。
  2. 使用 MySQL 5.5

我将根据列 ID 连接两个表。表 XYZ 中的组有很多值,这些值是表 ABC 中的列。

所以,我的问题是:

  1. 一旦 ID 匹配,我将从表 XYZ 中获取组的值,如上述情况中的 B。那么使用这个值,我应该如何从表ABC中获取B的值呢?

    我想做这样的事情:

    select A.(X.group) from ABC A join XYZ X on A.ID = X.ID;

  2. 一旦我能够使用步骤 1(如上所述)获取列 B 的值,我需要形成一个表达式,例如(组条件值),例如在可行的情况下 B = 50 并替换表达式中表 ABC 中 B 的值。需要评估形成的表达式,如果为真,则需要从表 ABC 返回 ABC_id。如何计算表达式?

    我正在做这样的事情:

    select A.ABC_ID from XYZ X join ABC A on A.ID = X.ID where X.(A.group) A.condition A.value;

我试过使用 PREPARE'ing 和 EXECUTE'ing,但是 ABC 和 XYZ 的连接会给出多行作为一个集合。而且它不起作用。

SELECT X.group, X.condition, X.value 
from XYZ X join ABC A
on X.ID = A.ID
into @colname, @condition, @value;

SET @qry = CONCAT('SELECT * from ABC WHERE ',@colname,@condition,@value);

PREPARE stmt FROM @qry;
EXECUTE stmt;

谢谢。

最佳答案

我在这里创建了一个 sqlfiddle:http://sqlfiddle.com/#!2/15e205/5

请注意,我更改了 groupcondition 的名称,因为它们是 reserved words , 并且对于列名来说确实不是好的选择。

我正在使用 CONCAT()根据在 XYZ 中检索到的值构建查询。

SELECT grp, cndition, value 
from XYZ
where id = 10
into @colname, @condition, @value;

SET @qry = CONCAT('SELECT * from abc WHERE ',@colname,@condition,@value);

PREPARE stmt FROM @qry;
EXECUTE stmt;

关于mysql - 使用表 B 中的值访问表 A 的列值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21384535/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com