一、判定數據庫表內是否存在數據
1、count( * )
SELECT COUNT(*) FROM dbtest.`orders` a WHERE a.order_name='admin'
可以返回符合條件記錄的總數
例:
SELECT * FROM dbtest.`orders`;
SELECT COUNT(*) FROM dbtest.`orders` a WHERE a.order_name='admin'
SELECT COUNT(*) FROM dbtest.`orders` a WHERE a.order_name='admin1'
2、count(1)
可以返回符合條件記錄的總數
SELECT COUNT(1) FROM dbtest.`orders` a WHERE a.order_name='admin'
SELECT COUNT(1) FROM dbtest.`orders` a WHERE a.order_name='admin1'
3、select 1
select 1 from tablename where col = col limit 1;
然后讀取語句執行所影響的行數。
當然這里limit 1很重要。這要mysql找到一條記錄后就不會在往下找了。這里執行所影響的行數不是0就是1,性能提高了不少。
例:
SELECT 1 FROM dbtest.`orders` a WHERE a.order_name='admin';
SELECT 1 FROM dbtest.`orders` a WHERE a.order_name='admin1';
SELECT 1 FROM dbtest.`orders` a WHERE a.order_name='admin' LIMIT 1;
SELECT 1 FROM dbtest.`orders` a WHERE a.order_name='admin1' LIMIT 1;
4、select *
SELECT * FROM `feed` WHERE `uid` =1121293 limit 1
可以返回一條記錄的字段內容
5、exists
SELECT EXISTS(SELECT * FROM dbtest.`orders` a WHERE a.order_name='admin')
只能判斷是否存在記錄,子查詢中的SELECT *在執行時會被忽略掉。
SELECT EXISTS(SELECT * FROM dbtest.`orders` a WHERE a.order_name='admin1')
6、插入記錄時判定記錄是否存在
INSERT INTO test(id, name)
SELECT id, name FROM tset1
WHERE not exists (select * from test where tset.id = tset1.id);