我有以下查询:
SET @sql = NULL ;
SELECT GROUP_CONCAT( DISTINCT CONCAT( 'select latitude,longitude,max(serverTime) as serverTime,', deviceID, ' AS device from d', deviceID, '_gps' )
SEPARATOR ' UNION ALL ' )
INTO @sql
FROM devices
WHERE accountID =2;
PREPARE stmt FROM @sql ;
EXECUTE stmt;
有人可以帮我用codeIgniter样式编写上述查询....
另一件事是:以1和2格式编写查询有什么区别
1. $query = $this->db->query('YOUR QUERY HERE');
2. $this->db->select("...");
$this->db->from();
$this->db->where();
如果我们使用第二种风格,它会对性能有任何影响......谢谢
答案 0 :(得分:0)
请检查documentation!
我觉得你的问题对于ActiveRecord来说有点复杂,所以也许你应该用原始查询做一些部分(例如GROUP_CONCAT
)
表单1和表单2之间的区别:在第二种表单中,ActiveRecord将保护您的标识符。我认为ActiveRecord的主要优点是:你可以在语言上破坏你的查询。其他优点:函数调用可能更具可读性,大 - 大 - 大查询字符串可能有点不可读。
答案 1 :(得分:0)
试试这个:
$sql = "SELECT GROUP_CONCAT( DISTINCT CONCAT( 'select latitude,longitude,max(serverTime) as serverTime,', deviceID, ' AS device from d', deviceID, '_gps' ) SEPARATOR ' UNION ALL ' )
INTO @sql FROM devices WHERE accountID =2;"
$this->db->set('@sql', 'NULL', FALSE);
$query = $this->db->prepare($sql);
$query->execute();
两种格式的性能应该大致相同。我更喜欢第二种,因为它更具可读性和可维护性。