Mysql 如果表B列col1小于表A,则从表B中选择行

Mysql 如果表B列col1小于表A,则从表B中选择行,mysql,Mysql,表A 表B插槽 UHID SlotID Date 111 1 2019-12-22 222 1 2019-12-22 333 3 2019-12-22 444 1 2019-12-22 555 2 2019-11-25 666 3 2019-12-22 ID Slot Max sl

表A

表B插槽

UHID    SlotID       Date
111      1          2019-12-22 
222      1          2019-12-22 
333      3          2019-12-22 
444      1          2019-12-22 
555      2          2019-11-25 
666      3          2019-12-22 
ID  Slot         Max slot
1   Morning       3
2   Noon          5
3   Evening       2
4   Night         5
现在我想从表B中获得2019-12-22日期的可用插槽,并且小于最大值

结果看起来像 表B插槽

UHID    SlotID       Date
111      1          2019-12-22 
222      1          2019-12-22 
333      3          2019-12-22 
444      1          2019-12-22 
555      2          2019-11-25 
666      3          2019-12-22 
ID  Slot         Max slot
1   Morning       3
2   Noon          5
3   Evening       2
4   Night         5

谢谢

我认为您可能会从CTE中受益:

ID  Slot         Max slot
2   Noon          5
4   Night         5

我认为您可能会从CTE中受益:

ID  Slot         Max slot
2   Noon          5
4   Night         5

这里需要一个左连接,并按表B行分组。然后,COUNT条件转到HAVING子句

WITH slot_counts (slot_id, slot_count)
  AS (SELECT slotid, count(*) FROM `tableA` WHERE `date` = '2019-12-22' GROUP BY slotid)
SELECT *
  FROM `tableB`, slot_counts
 WHERE `max slot` < slot_counts.slot_count
   AND tableB.slot = slot_counts.slot_id;
注意:根据您的服务器版本、设置和键,您可能需要在GROUPBY子句中包含表B中的所有列

| ID  | Slot  | Max_slot |
| --- | ----- | -------- |
| 2   | Noon  | 5        |
| 4   | Night | 5        |

您将在中找到更多信息。

您需要在此处使用左连接,并按表B行分组。然后,COUNT条件转到HAVING子句

WITH slot_counts (slot_id, slot_count)
  AS (SELECT slotid, count(*) FROM `tableA` WHERE `date` = '2019-12-22' GROUP BY slotid)
SELECT *
  FROM `tableB`, slot_counts
 WHERE `max slot` < slot_counts.slot_count
   AND tableB.slot = slot_counts.slot_id;
注意:根据您的服务器版本、设置和键,您可能需要在GROUPBY子句中包含表B中的所有列

| ID  | Slot  | Max_slot |
| --- | ----- | -------- |
| 2   | Noon  | 5        |
| 4   | Night | 5        |

您将在中找到更多信息。

继续。试试看,继续。尝试一些您忘记添加表槽计数的内容。。。从表B中,插槽计数。您忘记添加表插槽计数。。。从表B中,插槽_计数。