gpt4 book ai didi

mysql - 带子查询的连接表中的用例

转载 作者:行者123 更新时间:2023-11-29 17:47:30 25 4
gpt4 key购买 nike

我检查了与我的问题相关的所有问题,但我问它是因为它与该问题不同,我尝试过但出现错误。请帮助我找到解决方案。我已经使用联接和子查询,但我不知道为什么在此查询中出现错误。请检查查询,我还添加了 2 个表的创建查询。查询如下:

SELECT * FROM products_features 
CASE WHEN (value_table = 'features_values_float')
THEN
(JOIN features_values_float ON features_values_float.feature_value_id = products_features.feature_value_id)
WHEN (value_table = 'features_values_int')
THEN
(JOIN features_values_int ON features_values_int.feature_value_id = products_features.feature_value_id)
END

products_features 和 features_values_float 表创建语句:

CREATE TABLE `products_features` ( `id` int(11) NOT NULL AUTO_INCREMENT, `qid` varchar(32) NOT NULL, `feature_id` varchar(32) NOT NULL, `value_table` varchar(64) NOT NULL, `feature_value_id` varchar(10) NOT NULL, PRIMARY KEY (`id`), UNIQUE KEY `feature_value_id` (`feature_value_id`), KEY `products_features` (`feature_id`)) ENGINE=InnoDB AUTO_INCREMENT=143854 DEFAULT CHARSET=latin1

CREATE TABLE `features_values_float` ( `id` int(11) NOT NULL AUTO_INCREMENT, `feature_value_id` varchar(10) NOT NULL, `value_float` double NOT NULL, PRIMARY KEY (`id`), KEY `features_values_float` (`feature_value_id`)) ENGINE=InnoDB UTO_INCREMENT=40260 DEFAULT CHARSET=latin1

The image of errors I m getting by this query

提前谢谢您。

最佳答案

您可以只使用LEFT JOIN ,普通连接只会连接右表中存在匹配行的位置。左连接仍会显示该行,但它只是空白。

SELECT
*
FROM products_features
LEFT JOIN features_values_float USING (feature_value_id)

因此,您将始终看到两个表中的值,除非右表中没有信息,则其值将为空。

还有关于连接的注意事项,如果两列值相同,则可以使用 JOIN TABLE_NAME USING (COLUMN_NAME) 这使其更具可读性。

关于mysql - 带子查询的连接表中的用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49687443/

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