gpt4 book ai didi

SQL:从两个表中选择相似的列并按 Id 给出约束

转载 作者:行者123 更新时间:2023-12-02 09:30:41 25 4
gpt4 key购买 nike

我通过此链接 SQL: Select like column from two tables 有开发问题

表1中的A列:

a
b
c

表2中的A列:

d
e
f

结果集应该是:

a
b
c
d
e
f

然后该表中有complainId,我想按complainId过滤,但where子句出错。这是我的 sql 看起来很像

SELECT firstName, message, date
FROM replyComplaintUsers rcu
JOIN users u ON rcu.userId = u.userId
UNION
SELECT firstName, message, date
FROM replyComplaintControls rcc
JOIN controls c ON rcc.controlId = c.controlId
WHERE rcu.complaintId = $complaintId and rcc.complaintId = $complaintId
ORDER BY date DESC

谁能告诉我出了什么问题吗?

当我使用这个sql时我得到这个值“where 子句”中的未知列“rcu.complaintId”谢谢

最佳答案

在您的查询中,WHERE 子句仅适用于 UNION 的第二个 SELECT。做一个派生表:

select firstName, message, date, complaintId 
from
(
SELECT firstName, message, date, complaintId
FROM replyComplaintUsers rcu
JOIN users u ON rcu.userId = u.userId
UNION
SELECT firstName, message, date, complaintId
FROM replyComplaintControls rcc
JOIN controls c ON rcc.controlId = c.controlId
) as t
WHERE t.complaintId = $complaintId
ORDER BY date DESC

注1:DATE是ANSI SQL中的保留字,您可能需要指定“DATE”

注2:我不知道数据,但通常UNION ALL是人们在执行UNION时想要的。 (即不要尝试删除重复的行。)提供更好的性能!

关于SQL:从两个表中选择相似的列并按 Id 给出约束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33408330/

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