有两个表:
A:
| id | name | ---id主键
B:
| id | a_id | item_id | item_name | desc | ----id主键,a_id 与 A中的id关联
查询-包含item_id的所有的A记录
SELECT DISTINCT A.* FROM A JOIN B ON A.id = B.a_id WHERE item_id = 123;
SELECT A.* FROM A JOIN B ON A.id = B.a_id WHERE B.item_id =123 GROUP BY A.id;
SELECT A.* FROM A WHERE EXISTS (SELECT 1 FROM B WHERE B.a_id = A.id and B.item_id = 123);
这三种查询那种最好?
如果数据量很大的话第二种和第三种都不建议你用。推荐你用第一种。我们做项目的时候每次DBA审查我们的SQL只要出现子查询或者SQL用到
GROUP BY
都会问我们数据量大小还有表是怎么建的,都会建议我们不用GROUP BY
和子查询。老是说效率慢……我是菜鸟具体怎么慢我也不清楚