如何根据其他 table 值从 table 中查找不存在的记录
How to find a record that does not exists from a table based on other table value
所以我有两张桌子,这张是books
而这个是 payment
现在我想 select 如果 books
中有任何记录具有相似的(select * from a like a.field like '%blabla%
) title
甚至相同的 title
但不存在于 payment
我试过不存在但我不确定,因为执行查询过程很长,所以我认为情况并非如此。
根据这些信息,我试着整理了一个例子。我希望这对您有所帮助,让您接近您想要的。
CREATE TABLE books
(`number` int, `verification_date` date, `title` varchar(6))
;
INSERT INTO books
(`number`, `verification_date`, `title`)
VALUES
(14116299, '2020-05-01 18:00:00', 'Title1'),
(12331189, '2020-07-01 18:00:00', 'Title2'),
(13123321, NULL, 'Title4'),
(12318283, '2020-12-31 18:00:00', 'Title3'),
(12318284, '2021-01-31 18:00:00', 'Title2')
;
CREATE TABLE payments
(`number` int, `title` varchar(6), `pay_date` date)
;
INSERT INTO payments
(`number`, `title`, `pay_date`)
VALUES
(14116299, 'Title1', '2020-05-01 18:00:00'),
(12318283, 'Title3', '2020-12-31 17:00:00')
;
我们正在从账簿中选择所有列,并仅保留在付款中不匹配的记录 table。有关此的更多信息:How to select rows with no matching entry in another table?。然后添加了一个额外的 where 子句来搜索书籍 table 的标题。
SELECT b.*
FROM books b
LEFT JOIN payments p ON b.number = p.number
WHERE p.number is NULL
AND b.title LIKE'%2'
输出:
number verification_date title
12331189 2020-07-01 Title2
12318284 2021-01-31 Title2
所以我有两张桌子,这张是books
而这个是 payment
现在我想 select 如果 books
中有任何记录具有相似的(select * from a like a.field like '%blabla%
) title
甚至相同的 title
但不存在于 payment
我试过不存在但我不确定,因为执行查询过程很长,所以我认为情况并非如此。
根据这些信息,我试着整理了一个例子。我希望这对您有所帮助,让您接近您想要的。
CREATE TABLE books
(`number` int, `verification_date` date, `title` varchar(6))
;
INSERT INTO books
(`number`, `verification_date`, `title`)
VALUES
(14116299, '2020-05-01 18:00:00', 'Title1'),
(12331189, '2020-07-01 18:00:00', 'Title2'),
(13123321, NULL, 'Title4'),
(12318283, '2020-12-31 18:00:00', 'Title3'),
(12318284, '2021-01-31 18:00:00', 'Title2')
;
CREATE TABLE payments
(`number` int, `title` varchar(6), `pay_date` date)
;
INSERT INTO payments
(`number`, `title`, `pay_date`)
VALUES
(14116299, 'Title1', '2020-05-01 18:00:00'),
(12318283, 'Title3', '2020-12-31 17:00:00')
;
我们正在从账簿中选择所有列,并仅保留在付款中不匹配的记录 table。有关此的更多信息:How to select rows with no matching entry in another table?。然后添加了一个额外的 where 子句来搜索书籍 table 的标题。
SELECT b.*
FROM books b
LEFT JOIN payments p ON b.number = p.number
WHERE p.number is NULL
AND b.title LIKE'%2'
输出:
number verification_date title
12331189 2020-07-01 Title2
12318284 2021-01-31 Title2