gpt4 book ai didi

mysql - 限制来自另一个表属性的数据

转载 作者:行者123 更新时间:2023-11-28 23:25:48 24 4
gpt4 key购买 nike

我有表 Job 和表 Company。每个工作项目将针对一家公司。我想编写一个查询来列出工作。

公司有一个数量栏。当职位从 Job 中列出时,为给定公司列出的职位数量就是此 Quantity 列中的数字。数据示例

例如:公司 A 的数量为 2。查询数据将返回前 2 个职位。

如何在 sql 查询中执行此操作?

表作业

| id | Title | Company ID   |
|:---|------:|:------------:|
| 1 | Job 1 | 1
| 2 | Job 2 | 1
| 3 | Job 3 | 1
| 4 | Job 4 | 2
| 5 | Job 5 | 2

表公司

| id | Title     | Quantity|
|:---|----------:|:-------:|
| 1 | Company 1| 2
| 2 | Company 2| 2

以及查询结果Select * From Job => With condition limit quantity of company.

| id | Title | Company ID |
|:---|------:|:----------:|
| 1 | Job 1 | 1
| 2 | Job 2 | 1
| 4 | Job 4 | 2
| 5 | Job 5 | 2

最佳答案

创建过程,您可以使用带有 LIMIT 的变量

DELIMITER $$
CREATE PROCEDURE `GetJobs`()
NO SQL
BEGIN

DECLARE cid INT;
DECLARE jobsLimit INT;

DECLARE n INT DEFAULT 0;
DECLARE i INT DEFAULT 0;

CREATE TEMPORARY TABLE JobListTemp (
id INT,
Title VARCHAR(255),
CompanyID INT
) ENGINE=MEMORY;

SELECT COUNT(*) FROM Company INTO n;
SET i=0;
WHILE i<n DO

SET cId = (SELECT id FROM Company LIMIT i,1);

SET jobsLimit = (SELECT quantity FROM Company WHERE id = cId LIMIT 1);

INSERT INTO JobListTemp SELECT * FROM Job WHERE CompanyID = cId LIMIT jobsLimit;

SET i = i + 1;

END WHILE;

SELECT * FROM JobListTemp;

DROP TABLE JobListTemp;

END$$
DELIMITER ;

关于mysql - 限制来自另一个表属性的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39405851/

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