我不懂sql。我读了一些指南,把这个问题拼凑起来:
SELECT DISTINCT K.barcode
FROM wp_weblib_keywords K, wp_weblib_collection C
WHERE keyword LIKE Teen
AND keyword LIKE 7-12 && K.barcode = C.barcode
ORDER BY C.barcode ASC
我试图找到每一本同时有“青少年”和“7-12”两个关键词的书(我需要这本书同时有两个关键词,而不是一个或另一个)。我是这样初始化每个表的:
CREATE TABLE weblib_keywords
(
keyword VARCHAR(64) NOT NULL,
barcode varchar(16) not null check (barcode <> ''),
KEY (keyword)
) CHARACTER SET utf8;
CREATE TABLE weblib_collection
(
barcode varchar(16) not null unique check (barcode <> ''),
title varchar(128) not null check (title <> ''),
author varchar(64) not null check (author <> ''),
PRIMARY KEY (barcode),
KEY (title),
KEY (author)
) CHARACTER SET utf8;
我想问题是我没有告诉sql要在哪个表中搜索,但是我不知道如何编写它。谢谢你的帮助!
3条答案
按热度按时间njthzxwz1#
你可以试试
UNION
基于你的数据量。为什么是工会?
编辑:
如果你只需要他们两个尝试下面。如果你试着
LIKE
以及AND
一起它不会给你任何结果。您应该考虑使用不同的别名再次连接同一个表,并分别检查约束。jfewjypa2#
尝试下面的-like操作符,你需要通配符
'%'
```SELECT DISTINCT K.barcode FROM wp_weblib_keywords K inner join wp_weblib_collection C
on K.barcode = C.barcode
WHERE keyword LIKE '%Teen%' OR keyword LIKE '%7-12%'
order by C.barcode
nx7onnlm3#
如果wp\u weblib\u keywords\u表的语义是在每行中包含一个关键字,那么这个查询将永远不会返回结果(除了格式问题)
原因是查询查看wp\u weblib\u keywords表中的每一行,并尝试查找关键字为两个独立值的单行。嗯,表中的一行永远不会有一列等于两个单独的值。
试试这个:
如果有一个关键字为“teen”的记录和另一个关键字为“7-12”的记录,则该查询将返回行