我有一个基本的查询,从三个表中获取值。三个表:公司、classes_by_company和person。我在所有表中都有一个外键,名为company_id。在where子句中,我使用LIKE
与随机值比较为任何可能匹配的结果获取的值。但我这样做是没有成功的。我在sql行WHERE a.id LIKE %1% OR a.company_id LIKE %3% OR c.count LIKE %1% OR p.count LIKE %1%
中得到一个错误。如何将从这三个表中获取的所有值与随机值进行比较,以查看是否有匹配?SQLFIDDLE
SELECT a.id, a.company_id, a.status,
c.count AS classes_per_company,
p.count AS employees_per_company
FROM company a
LEFT JOIN (SELECT company_id, COUNT(*) as count
FROM classes_by_company
GROUP BY company_id) c
ON a.company_id = c.company_id
LEFT JOIN (SELECT company_id, COUNT(*) as count
FROM person
GROUP BY company_id) p
ON a.company_id = p.company_id
WHERE a.id LIKE %1% OR a.company_id LIKE %3% OR c.count LIKE %1% OR p.count LIKE %1%
表模式:
CREATE TABLE company
(
id int auto_increment primary key,
company_id int,
status varchar(20)
);
CREATE TABLE classes_by_company
(
id int auto_increment primary key,
company_id int,
class_name varchar(20)
);
CREATE TABLE person
(
id int auto_increment primary key,
employee_id int,
company_id int,
person_name varchar(20)
);
发布于 2014-01-06 01:23:05
LIKE
后面必须有一个字符串,所以应该是:
WHERE a.id LIKE '%1%'
OR a.company_id LIKE '%3%'
OR c.count LIKE '%1%'
OR p.count LIKE '%1%'
发布于 2014-01-06 01:25:33
id是一个整数列;LIKE操作符依赖于文本数据类型,例如nvarchar。
您可以将id转换为字符串,例如,WHERE (a.id为VARCHAR(10)),如%1%.
还请注意%1%左右的单引号。
https://stackoverflow.com/questions/20946644
复制