我在做预订系统的工作。一个错误允许一些单位重复预订。
使用2012 Express
IE,x单元是为两个具有相同checkIn日期的客户预订的。
错误已经修复,但我想检查是否有任何单位确实重复预订。
我正在努力使SQL查询工作,以返回这些“重复”单元。我可以用一些例程在代码中处理这个问题,但我希望得到一个SQL查询,向我展示这些单元。
我尝试了一个连接(在同一个表上),它返回了所有的单元.然后我尝试了一些子查询,但我搞砸了.
SELECT *
FROM bookingTable as q1
WHERE (q1.unit = (SELECT unit FROM bookingTable AS q2
WHERE q2.unit = q1.unit)
AND q1.checkIn = (SELECT checkIn FROM bookingTable AS q3)
)
ORDER BY
q1.checkIn,q1.unit错误:
Msg 512,第16级,状态1,第2行 子查询返回的值超过一个。当子查询跟随=、!=、<、<=、>、>=或子查询用作表达式时,这是不允许的。
发布于 2014-01-27 10:46:56
SELECT unit,checkIn,COUNT(*)
FROM bookingTable
GROUP BY unit,checkIn
HAVING COUNT(*) > 1将告诉您unit和checkIn值的哪个组合出现在多个行中。
如果需要,可以使用它查看各个行:
SELECT bt.*
FROM bookingTable bt
INNER JOIN (
SELECT unit,checkIn,COUNT(*) as cnt
FROM bookingTable
GROUP BY unit,checkIn
HAVING COUNT(*) > 1
) t
ON bt.unit = t.unit and
bt.checkIn = t.checkInhttps://stackoverflow.com/questions/21378694
复制相似问题