【问题标题】:SQL: Select like column from two tables and give constraint by IdSQL:从两个表中选择类似列并通过 Id 给出约束
【发布时间】:2015-10-29 07:33:58
【问题描述】:

我有来自这个链接SQL: Select like column from two tables的开发问题

表1中的A列:

a
b
c

表2中的A列:

d
e
f

结果集应该是:

a
b
c
d
e
f

然后在该表中有投诉 ID,我想按投诉 ID 过滤,但在 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 子句仅适用于第二个 SELECT。
  • 您的 select 子句中的 claimId 字段在哪里...

标签: sql


【解决方案1】:

在您的查询中,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 时想要的。 (即不要尝试删除重复的行。)提供更好的性能!

【讨论】:

  • 谢谢@jarlh 我应该把“WHERE”放在两个表上“SELECT firstName, message, date FROM replyComplaintUsers rcu JOIN users u ON rcu.userId = u.userId WHERE rcu.complaintId = $complaintId UNION SELECT firstName, message, date FROM replyComplaintControls rcc JOIN controls c ON rcc.controlId = c.controlId WHERE rcc.complaintId = $complaintId ORDER BY date DESC " 它有效:)
【解决方案2】:
select * from (
SELECT firstName, message, date 
FROM replyComplaintUsers rcu
  JOIN users u ON rcu.userId = u.userId
  where rcu.complaintId = $complaintId
UNION
SELECT firstName, message, date
FROM replyComplaintControls rcc
  JOIN controls c ON rcc.controlId = c.controlId
WHERE   rcc.complaintId = $complaintId) DV_Table
ORDER BY date DESC

【讨论】:

  • @Faisal 但你没有按下向上按钮..:)
  • 我的声望仍然低于 15 对不​​起 :) 我稍后会投票@anwaar_hell
  • 请点赞我的问题,我可以点赞你的答案@anwaar_hell
猜你喜欢
  • 2010-09-07
  • 1970-01-01
  • 2013-05-01
  • 2011-09-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-01-21
  • 1970-01-01
相关资源
最近更新 更多